TLDR:我需要使用 scsript 从单独的 google 工作表导入一系列单元格,但我被告知我无权访问其他工作表(我确信 ID 是正确的)。我不知道为什么我无法访问另一张纸。如果有人知道一个简单的脚本来做到这一点那就太好了。请帮忙!
大家好,我一直在使用 importrange 将其他谷歌工作表中的数据提取到我的主工作表中,但遇到了其他人之前抱怨的无休止的加载时间。我以前从未使用过脚本,所以不知道我在做什么。
在目标 google 工作表中,我创建了以下脚本,但收到此错误:“找不到具有给定 ID 的项目,或者您无权访问它。”
function UpdateRange(ID, source_sheet, source_range, destination_sheet_name) {
var values = SpreadsheetApp.open(DriveApp.getFileById(ID))
.getSheetByName(source_sheet)
.getRange(source_range)
.getValues();
return SpreadsheetApp.getActive()
.getSheetByName(destination_sheet_name)
.getRange(1, 22, values.length, values[0].length)
.setValues(values);
}
UpdateRange("1Rt***_tRbs", "Revenue By Category", "E2:M9", "Sheet33");
***用于匿名原始表ID
我不明白为什么我无法访问该工作表,即使我是最初创建该工作表的人。我如何访问该工作表或者我还可以执行哪些操作来导入此范围。非常感谢您的帮助!
快速浏览一下,您可以尝试简化:
SpreadsheetApp.open(DriveApp.getFileById(ID))...
只是:
SpreadsheetApp.openById(ID)...
两种方法都应该可以正常工作,但是您可以避免使用 DriveApp API,这可能需要一些与电子表格不同的权限。
在阅读了一百万篇博客并尝试了无数的技巧和解决方法之后 - 我意识到我的非常简单的错误导致了我所有的 REF!s 错误:
确保您的源文件保存为 Google 表格,而不是 xls(或其他任何文件)。
立即解决了我的所有问题。 :)
祝你好运:)