Google Drive复制文件报错:找不到makeCopy(string,string)方法,如何指定目标文件夹?
修复Google Apps Script中
makeCopy方法的错误 问题根源
你碰到的Cannot find method makeCopy(string,string)错误,核心原因是**makeCopy()方法的参数用法不对**:当需要指定目标文件夹时,第二个参数必须传入Folder对象,而不是直接传FolderID字符串。
具体修复步骤
- 通过FolderID获取目标文件夹对象:用
DriveApp.getFolderById()方法,把你的FolderID传入,得到对应的Folder实例。 - 正确调用
makeCopy方法:第一个参数填副本的名称(字符串),第二个参数传刚才获取到的Folder对象。
修改后的代码示例
结合你的函数逻辑,调整后的代码大概是这样:
function duplicateTemplateQuality(){ /*** Copia la plantilla de Calidad a la carpeta actual / Copy template to current folder ***/ // 获取模板文件(这里假设你已经有template变量,比如通过文件ID获取) const template = DriveApp.getFileById("你的模板文件ID"); // 自定义副本名称(可根据你的需求调整) const newCopyName = "Calidad副本-" + new Date().toLocaleString(); // 你输入的目标FolderID const targetFolderId = "你的目标FolderID"; let targetFolder; if (targetFolderId) { // 如果输入了FolderID,获取对应的文件夹对象 targetFolder = DriveApp.getFolderById(targetFolderId); } else { // 如果留空,使用模板所在的文件夹 targetFolder = template.getParents().next(); } // 正确调用makeCopy:名称 + Folder对象 const copiedFile = template.makeCopy(newCopyName, targetFolder); // 后续逻辑(比如打印副本链接等) Logger.log("副本已创建,链接:" + copiedFile.getUrl()); }
关键注意点
- 确保脚本有目标文件夹的访问权限:如果目标文件夹是共享文件夹,要确认当前账号有编辑权限,否则会触发权限错误。
- 当
targetFolderId为空时,代码会自动 fallback 到模板所在文件夹,和你之前的正常逻辑保持一致。
内容的提问来源于stack exchange,提问作者Gonzalo
相关产品推荐
相关产品推荐

