如何在Google Apps Script中使用shortcutDetails获取快捷方式指向的文件ID
解决Google Drive快捷方式获取原文件ID并复制的问题
你的代码报错是因为两个核心问题:
- 错误直接访问
shortcutDetails属性,DriveApp中需用getShortcutDetails()方法获取快捷方式详情 - 把
targetId当成方法调用,实际上它是一个属性,不需要加括号
另外必须先判断文件是否为快捷方式,否则非快捷方式文件调用getShortcutDetails()会返回null,同样引发报错。
正确的代码示例:
function TestFunction() { var id = "你的快捷方式ID"; var file = DriveApp.getFileById(id); // 先判断当前文件是否是快捷方式 if (file.getMimeType() === "application/vnd.google-apps.shortcut") { var shortcutDetails = file.getShortcutDetails(); var targetId = shortcutDetails.targetId; // targetId是属性,无需加括号 Logger.log("原文件ID:" + targetId); // 获取原文件并复制到目标文件夹 var targetFile = DriveApp.getFileById(targetId); var targetFolder = DriveApp.getFolderById("目标文件夹ID"); // 替换为你的目标文件夹ID targetFile.makeCopy("复制后的文件名", targetFolder); } else { Logger.log("当前文件不是快捷方式"); } }
关键说明:
- 快捷方式的MIME类型固定为
application/vnd.google-apps.shortcut,必须先做类型判断 getShortcutDetails()方法返回快捷方式详情对象,其中targetId就是原文件的ID- 复制文件用
makeCopy()方法:第一个参数是复制后的文件名(可选,不传则沿用原文件名),第二个参数是目标文件夹(可选,不传则复制到当前文件所在文件夹)
内容的提问来源于stack exchange,提问作者ComeSFI
相关产品推荐
相关产品推荐

