【发布时间】:2020-07-30 10:02:41
【问题描述】:
我之前在 Stack Overflow 上询问过如何在不使用电子表格 ID 的情况下使用 Google Script 从另一个 Google Sheet 导入数据。 Previous question and the answers,得到了答复并且工作正常。现在看来,谷歌已经更新了一些东西,使它无法工作,因此在我的收件箱中发送了无法完成的错误电子邮件。
我现在收到以下错误:
异常:无法检索下一个对象:迭代器已到达末尾。 (第 2 行,文件“数据导入”)
“数据导入”是我的脚本文件的名称。
不仅如此,当我尝试在同一张工作表上运行其他脚本时,除非我完全删除此脚本,否则其他脚本也无法运行。
这是运行完美但现在停止的代码。
var folder = DriveApp.getFoldersByName("SOURCE FOLDER NAME").next();
var file = folder.getFilesByName("SOURCE FILE NAME").next();
var sourceSpreadsheetID = file.getId();
var sourceWorksheetName = "SOURCE WORKSHEET NAME";
var targetSpreadsheetID = "TARGET FILE ID";
var targetWorksheetName = "TARGET WORKSHEET NAME";
function importData1() {
var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID);
var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName);
//var thisData = thisWorksheet.getDataRange();
var thisData = thisSpreadsheet.getRangeByName("A:Q");
var toSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetID);
var toWorksheet = toSpreadsheet.getSheetByName(targetWorksheetName);
var toRange = toWorksheet.getRange(1, 1, thisData.getNumRows(), thisData.getNumColumns())
toRange.setValues(thisData.getValues());
}
【问题讨论】:
-
var folder = DriveApp.getFolderById(id) 其中 id 是您的文件夹的 id。你可以试试这个,而不是你的第一行?文件夹的 ID 可以在您的 Google 驱动器中文件夹的 URL 中找到。
-
@MariosKaramanis 恐怕没用。值得注意的是,谷歌工作表每天都会被同名的脚本(由第三方应用程序)替换,所以我不能简单地使用获取工作表 ID 方法。但是该文件夹保持不变。
-
同样在你的代码的第一部分你没有做任何类型的错误检查,也许你正在寻找的文件夹不存在该文件不是在该文件夹中创建的。此外,您可能有多个文件夹,但我没有看到您使用
next方法进行迭代。您是否希望在第一个文件中得到这个?检查您的文件是否确实可以找到?
标签: javascript google-apps-script google-sheets google-drive-api