1

在谷歌工作表中,使用 onSelectionChange 的脚本在选择工作表“工作表 3”时,它将转到工作表“工作表 2”并在单元格 E1 中写入一些内容。在您共享它或更改某些代码之前,这一直有效。然后它只做部分工作:它写在'Sheet 2!E1' 但不退出'表 3' 并且不显示'表 2'。如果您关闭文件并重新输入它不是固定的(我通常必须这样做才能让它在我第一次在文件上使用 onSelectionChange 时工作)。但是,如果您创建更改文件的副本,则该副本过去可以与更改一起正常工作。我应该怎么做才能不破坏 onSelectionChange?

function onSelectionChange(e){
  const sheetName = e.range.getSheet().getSheetName();
  if(sheetName=='Sheet 3'){
    change1();
  }
}

function change1() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet 2'), true);
  spreadsheet.getRange('E1').activate();
  spreadsheet.getCurrentCell().setValue('You are not Allowed');
};
4

1 回答 1

1
  • 当您运行一个函数时,Apps 脚本会自动为其提供必要的范围。

  • File->Project-> Properties您可以通过在旧版编辑器或Overview-> Project OAuth Scopes新编辑器中继续检查脚本正在使用的范围- 请参阅此处

  • 如果您从代码中删除需要特定范围的请求并保存脚本 - Apps 脚本不会自动删除多余的范围

  • 如果您的脚本包含无法与简单触发器一起使用的范围- 您的触发器将导致错误

解决方案:

  • 通过在清单中手动设置所需的范围来删除冗余范围 - 如此处所述

笔记:

  • 注意工作表名称 -Sheet 3Sheet3.
  • 如果您的脚本执行错误 - 查看脚本执行以查看用于调试的确切错误消息。

21 年 2 月 2 日更新

截至目前,存在onSelectionChange. 如果您受到影响,请star在 Google 的问题跟踪器上添加它以提高知名度。

于 2021-02-01T14:58:10.547 回答