我收到此错误:
TypeError:imgname.makeCopy不是函数copyFilesFromSpreadsheet @ Code.gs:35
我已经在互联网上搜索并阅读了所有有关 Makecopy 的其他帖子,但无济于事。我是 Google 云端硬盘应用程序脚本的初学者。我的直觉告诉我,我无权访问 DriveApp 服务...但我认为我启用了它。请参阅左侧的服务下方。
或者脚本不知道在“我的云端硬盘”中的何处查找它。 SourceFolderID 从未被引用,因此它可能不知道在哪里可以找到它?那么如何在应用程序脚本中引用位置呢? 您可以从调试窗口中看到电子表格中变量的第一次迭代已从电子表格中正确提取。所以我知道这样没问题。
非常感谢您的指导。
我尝试将文件从共享驱动器移到我的驱动器中,认为这可能是权限问题。我的测试平台目前将电子表格放在源文件夹的根级别。
我相信我已经启用了 Drive 服务和电子表格服务,我 THINK 拥有 Makecopy 类。我无法从错误中判断 Makecopy 是否返回 null,因为它无法识别文件名或位置。
我相信我可能迷失在谷歌土地中并且不明白东西存放在哪里?
function copyFilesFromSpreadsheet() {
// Get spreadsheet data
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("testmove"); // Replace with your sheet name
var data = sheet.getDataRange().getValues();
// Loop through each row
for (var i = 1; i < data.length; i++) {
var fileName = data[i][1]; // Assuming file name is in the first column
var sourceFolderId = data[i][0]; // Assuming source folder ID is in the second column
var destFolderId = data[i][2]; // Assuming destination folder ID is in the third column
// Find file in Drive
var files = DriveApp.getFiles();
var imgname = DriveApp.getFilesByName(fileName);
if (imgname) {
// Copy file to destination folder
imgname.makeCopy(imgname, DriveApp.getFolderById(destFolderId));
}
}
}
如文档中所述,
getFilesByName
返回一个FileIterator。
var imgname = DriveApp.getFilesByName(fileName);
imgName
是 FileIterator
类型,它没有 .makeCopy
方法。 FileIterator
有这些方法。要从迭代器中获取 file
,请使用 next
方法:
const imgnameFileIterator = DriveApp.getFilesByName(fileName);
if (imgnameFileIterator.hasNext()) {
// Copy file to destination folder
imgnameFileIterator.next().makeCopy(imgname, DriveApp.getFolderById(destFolderId));
}