【问题标题】:is there a way to make getActiveRange() function work on a different spreadsheet?有没有办法让 getActiveRange() 函数在不同的电子表格上工作?
【发布时间】:2021-06-22 12:15:10
【问题描述】:

我需要一个代码来从电子表格 A 中获取活动选择并将其放在电子表格 B 中转置,但是当我尝试从工作表 A 中获取活动范围时,它总是返回 A1,这是不正确的,这里是代码:

function newVariant(cell) {
  var srcSheet = SpreadsheetApp.openByUrl("sheetID").getActiveSheet();
  var srcRange = srcSheet.getActiveRange().getA1Notation();
  console.log(srcRange);
}

这是日志中的内容:

我读到“getActiveRange()”仅适用于当前的电子表格,所以我尝试添加“https://www.googleapis.com/auth/spreadsheets.readonly”以便我可以访问我的所有谷歌表格,但我仍然得到“A1”作为选定范围,而它不是。

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    根据documentation,您需要绑定脚本才能使用getActiveRange() 等方法,因为它们引用链接(绑定)到脚本的电子表格。

    如果您有一个绑定到电子表格 A 的脚本,则不能使用它来访问电子表格 B 上的活动范围,因为它只绑定到电子表格 A。

    我读到“getActiveRange()”只适用于当前的电子表格 只有这样我才尝试添加 “https://www.googleapis.com/auth/spreadsheets.readonly”这样我就 可以访问我所有的谷歌表格,但我仍然得到“A1”作为 选定的范围,而不是。

    绑定的概念实际上并不取决于您授予脚本的权限,因此更改它不会有任何区别。此外,您会得到“A1”,因为这是 getActiveRange() 返回的默认值。

    workaround 将使用edit trigger 来跟踪电子表格 B 上的活动范围,然后您可以使用绑定到电子表格 A 的脚本获取该范围。

    【讨论】:

    • 高亮某些单元格会触发 onEdit() 吗?
    • 不,它没有。
    • 那么我应该如何从客户端将一些数据从电子表格 A 复制到 SpreadSheet B?
    • 将脚本附加到电子表格 A(具有活动范围的那个)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多