将新文件移动到特定文件夹! google 脚本
Move a new file to a specific folder! google script
我已经编写了一个应该可以运行的简短脚本,但是我返回了一个错误,我不明白为什么。
错误是“异常:参数 (DriveApp.File) 与 DriveApp.File.moveTo 的方法签名不匹配。
新表“
我的脚本在下面,提前感谢任何能看到错误的人。
function NewSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ss1 = ss.getSheetByName('URL');
for(i=1;i<ss1.getLastRow();i++){
var s1 = ss1.getRange(i+1,6).getValue()
var folder = DriveApp.getFileById('1W5LeSrijdfFvgqZQfKEhrK7YOziHL322');
var newSS = SpreadsheetApp.create('STSOR - '+s1)
var id = newSS.getId()
DriveApp.getFileById(id).moveTo(folder);
var paste = ss.getSheetByName(s1).copyTo(newSS).setName('STSOR - '+s1)
ss1.getRange(i+1,2).setValue(id)
}
}
您正在将文件移动到另一个文件。您应该在这一行使用 getFolderById()
:
var folder = DriveApp.getFileById('1W5LeSrijdfFvgqZQfKEhrK7YOziHL322');
您的代码还有其他问题。没有理由在循环的每次迭代中都获取文件夹。您还应该将 getRange()
和其他 API 调用移到循环之外。通读 best practices 以获得更高质量的代码。
我想这就是你想要的
function NewSheets() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName('URL');
const fldr = DriveApp.getFolderById('folderid');
const vs = sh.getRange(2, 6, sh.getLastRow() - 1, 1).getValues();
vs.forEach((r, i) => {
let newss = SpreadsheetApp.create('STSOR - ' + r[0]);
let id = newss.getId();
DriveApp.getFileById(id).moveTo(fldr);
ss.getSheetByName(r[0]).copyTo(newss).setName('STSOR - ' + r[0]);
sh.getRange(i + 1, 2).setValue(id);
});
}
我已经编写了一个应该可以运行的简短脚本,但是我返回了一个错误,我不明白为什么。
错误是“异常:参数 (DriveApp.File) 与 DriveApp.File.moveTo 的方法签名不匹配。 新表“
我的脚本在下面,提前感谢任何能看到错误的人。
function NewSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ss1 = ss.getSheetByName('URL');
for(i=1;i<ss1.getLastRow();i++){
var s1 = ss1.getRange(i+1,6).getValue()
var folder = DriveApp.getFileById('1W5LeSrijdfFvgqZQfKEhrK7YOziHL322');
var newSS = SpreadsheetApp.create('STSOR - '+s1)
var id = newSS.getId()
DriveApp.getFileById(id).moveTo(folder);
var paste = ss.getSheetByName(s1).copyTo(newSS).setName('STSOR - '+s1)
ss1.getRange(i+1,2).setValue(id)
}
}
您正在将文件移动到另一个文件。您应该在这一行使用 getFolderById()
:
var folder = DriveApp.getFileById('1W5LeSrijdfFvgqZQfKEhrK7YOziHL322');
您的代码还有其他问题。没有理由在循环的每次迭代中都获取文件夹。您还应该将 getRange()
和其他 API 调用移到循环之外。通读 best practices 以获得更高质量的代码。
我想这就是你想要的
function NewSheets() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName('URL');
const fldr = DriveApp.getFolderById('folderid');
const vs = sh.getRange(2, 6, sh.getLastRow() - 1, 1).getValues();
vs.forEach((r, i) => {
let newss = SpreadsheetApp.create('STSOR - ' + r[0]);
let id = newss.getId();
DriveApp.getFileById(id).moveTo(fldr);
ss.getSheetByName(r[0]).copyTo(newss).setName('STSOR - ' + r[0]);
sh.getRange(i + 1, 2).setValue(id);
});
}