首页 > 解决方案 > 用于导入范围的 Google 表格脚本:错误“您无权访问它。”

问题描述

TLDR:我需要使用 scsript 从单独的 google 表格导入一系列单元格,但被告知我无权访问另一张表格(我确定 ID 是正确的)。我不知道为什么我无法访问另一张纸。如果有人知道一个简单的脚本来做到这一点,那就太好了。请帮忙!

大家好,我一直在使用 importrange 将其他 google 表格中的数据提取到我的主表格中,但是遇到了其他人之前抱怨的永无止境的加载时间。我以前从未使用过脚本,所以我真的不知道我在做什么。

在目标 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

我不明白我是如何无法访问工作表的,即使我是首先创建它的人。如何访问工作表或我可以做些什么来导入此范围。非常感谢您的帮助!

标签: google-apps-scriptgoogle-sheets

解决方案


快速浏览一下,您可以尝试简化:

SpreadsheetApp.open(DriveApp.getFileById(ID))...

只是:

SpreadsheetApp.openById(ID)...

这两种方法都应该可以正常工作,但是您避免使用 DriveApp API,它可能需要一些不同的权限,而不仅仅是电子表格的权限。


推荐阅读