将文件移动到文件夹 google drive/sheet
Moving files to a folder google drive/sheet
我是 google 的新手,我正在尝试创建传播sheet,然后将其移动到特定文件夹。
在“Synthése Mag”上sheet我有我给文件的所有名称。
已成功创建跨页sheet,但是,当我尝试移动它时,出现以下消息:
Exception: Unexpected error while getting the method or property
getFolderById on object DriveApp.
我的代码如下:
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Synthése mag'), true);
for(var i=2;i<4;i++){
var mag = spreadsheet.getSheetByName('Synthése mag').getRange(i,2).getValue ();
var ssNew = SpreadsheetApp.create(mag);
Logger.log(ssNew.getUrl());
var newmag = DriveApp.getFilesByName(mag)
DriveApp.getFolderById("Folder ID").addFile(newmag)
};
}
有人可以帮忙吗?
解释:
代码中的问题是 getFilesByName does not return a File but a FileIterator. You want to get a file
object and therefore you can use getFileById 并传递文件的 ID。
不需要在for
循环中激活sheet和重新定义sheet。
获取循环前的所有值,这样就不会反复调用getRange/getValue
解决方案:
function myFunction() {
const spreadsheet = SpreadsheetApp.getActive();
const mag = spreadsheet.getSheetByName('Synthése mag');
const names = mag.getRange('B2:B3').getValues().flat();
names.forEach(nm=>{
let ssNew = SpreadsheetApp.create(nm);
let ssFile = DriveApp.getFileById(ssNew.getId());
DriveApp.getFolderById("Folder ID").addFile(ssFile)
})
};
我是 google 的新手,我正在尝试创建传播sheet,然后将其移动到特定文件夹。
在“Synthése Mag”上sheet我有我给文件的所有名称。
已成功创建跨页sheet,但是,当我尝试移动它时,出现以下消息:
Exception: Unexpected error while getting the method or property getFolderById on object DriveApp.
我的代码如下:
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Synthése mag'), true);
for(var i=2;i<4;i++){
var mag = spreadsheet.getSheetByName('Synthése mag').getRange(i,2).getValue ();
var ssNew = SpreadsheetApp.create(mag);
Logger.log(ssNew.getUrl());
var newmag = DriveApp.getFilesByName(mag)
DriveApp.getFolderById("Folder ID").addFile(newmag)
};
}
有人可以帮忙吗?
解释:
代码中的问题是 getFilesByName does not return a File but a FileIterator. You want to get a
file
object and therefore you can use getFileById 并传递文件的 ID。不需要在
for
循环中激活sheet和重新定义sheet。获取循环前的所有值,这样就不会反复调用
getRange/getValue
解决方案:
function myFunction() {
const spreadsheet = SpreadsheetApp.getActive();
const mag = spreadsheet.getSheetByName('Synthése mag');
const names = mag.getRange('B2:B3').getValues().flat();
names.forEach(nm=>{
let ssNew = SpreadsheetApp.create(nm);
let ssFile = DriveApp.getFileById(ssNew.getId());
DriveApp.getFolderById("Folder ID").addFile(ssFile)
})
};