Google Script移动新建文件到指定文件夹时moveTo报参数不匹配错误
错误原因
moveTo方法的参数类型传错了:你用DriveApp.getFileById()获取目标路径,返回的是文件对象,但是moveTo要求传入的是文件夹对象,参数类型不匹配就触发了签名错误。你把目标文件夹的ID传给了获取文件的方法,自然拿不到符合要求的参数类型。
修正后代码
function NewSheets() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var ss1 = ss.getSheetByName('URL'); // 获取目标文件夹对象,移出循环避免重复调用API提升运行效率 var targetFolder = DriveApp.getFolderById('1W5LeSrijdfFvgqZQfKEhrK7YOziHL322'); for(var i = 1; i < ss1.getLastRow(); i++){ var s1 = ss1.getRange(i + 1, 6).getValue(); var newSS = SpreadsheetApp.create('STSOR - ' + s1); var newFileId = newSS.getId(); DriveApp.getFileById(newFileId).moveTo(targetFolder); ss.getSheetByName(s1).copyTo(newSS).setName('STSOR - ' + s1); ss1.getRange(i + 1, 2).setValue(newFileId); } }
可选优化点
- 循环变量
i补充声明,避免成为全局变量引发意料之外的异常 - 每行代码末尾补充分号,避免语法解析出现歧义
- 批量操作数据量较大时,可以先把工作表数据批量读取到内存处理,减少读写API调用次数,进一步提升运行效率
内容的提问来源于stack exchange,提问作者Daniel Lawrie
相关产品推荐
相关产品推荐

