【问题标题】:How can I get sheets switching event by Google App Script in Google Sheets如何通过 Google 表格中的 Google App 脚本获取表格切换事件
【发布时间】:2021-03-17 16:50:45
【问题描述】:

我正在为将数据发送到服务器的 Google 表格编写脚本。目标 Google 表格文档有几张表格。每张纸都必须有自己的菜单。因此,我搜索了任何在活动工作表更改时触发的触发器,但我找不到。

如何获得工作表切换事件?

谢谢你:)

更新。 我有这个功能:

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var menuEntries = [
    { name: "Upload " + sheet.getName() + " to Server", functionName: "ExportSheet" },
  ];
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.addMenu("Export JSON", menuEntries);

}

但我想将 onOpen 替换为将由激活工作表时触发的某些事件调用的函数。

更新 2。

const ss=SpreadsheetApp.getActive();

function onOpen(e) {
  CreateMenuOptions(e);
}

function onSelectionChange(e) {
  CreateMenuOptions(e);
}

function CreateMenuOptions(e){
  var sheetName = e.range.getSheet().getName();
  var menuEntries = [
    { name: "Upload " + sheetName + " to Server", functionName: "ExportSheet" },
  ];
  ss.updateMenu("Export to JSON", menuEntries);
  ss.toast(sheetName);
  console.log(sheetName);
}

我根据@Cooper 的回答应用更改。现在,onOpen 仍然可以正常工作,但 onSelectionChange 除非记录工作表的名称,否则不会做任何事情。菜单未更新,吐司未显示。 :(

【问题讨论】:

  • 当您说每张工作表都必须有自己的菜单时,您指的是电子表格还是工作表。
  • 我说的是电子表格菜单。但是对于不同的活动工作表,菜单应该是不同的。

标签: google-apps-script triggers


【解决方案1】:

试试这个:

function onSelectionChange(e) {
  const ss=SpreadsheetApp.getActive();
  ss.toast(e.range.getSheet().getName());
}

它获得新工作表的唯一原因是,当您从一张工作表转到另一张工作表时,选择会发生变化。但它会在任何选择更改时触发。

【讨论】:

  • 你太棒了。谢谢你。我不明白我怎么能错过文档中的这个触发器......
  • 我根据您的回答更新了我的代码。但我有一个问题。当我更新页面并尝试更改选择时,控制台会记录 onSelectionChange 的执行而没有错误。但不幸的是,当我在选择之间切换时菜单选项不会改变,并且烤面包不会出现。但!!!如果我让这个 google 表格文档打开一段时间(大约 10 分钟),脚本就会开始按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-18
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多