当前位置: 首页 > 知识库问答 >
问题:

如何通过Google sheets中的Google应用程序脚本获取工作表切换事件

谷飞星
2023-03-14

我正在为谷歌表发送数据到服务器的脚本。目标Google Sheets文档有几个工作表。每个工作表必须有自己的菜单。所以我已经搜索了当活动表更改时触发的任何触发器,但我不能。

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

谢谢你:)

使现代化我有这个功能:

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仍然可以正常工作,但是onSseltionChange不做任何事情,除非工作表的日志名称。菜单不更新,吐司不显示。:(

共有1个答案

严劲
2023-03-14

试试这个:

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

它获得新工作表的唯一原因是因为选择随着从一个工作表到另一个工作表的变化而变化。但它会对任何选择变化开火。

 类似资料:
  • 我一直在寻找一个工作表保护问题的解决方案,我有一个工作表,其中包括从顶部的一些字段将数据写入下面的工作表的自动脚本。我希望用户能够在顶部的字段中提供数据,然后运行脚本添加下面的数据。如果启用了保护,则用于添加数据的脚本对工作表的所有者来说可以正常工作,但对于任何具有编辑权限的用户来说都无法正常工作,因为脚本无法清除将数据写入工作表底部的保护。 https://developers.googlebl

  • 我试图通过谷歌应用程序脚本调用谷歌表单API。例如,我遵循此处提供的说明: https://developers.google.com/sheets/api/quickstart/js 我已经通过我的谷歌云平台项目生成了客户端ID和API密钥,正如其他地方建议的那样。 现在,我已经创建了一个包含两个文件的谷歌应用程序脚本,ode.gs文件和一个名为index.html的文件,其中包含从上面的谷歌表

  • 我使用脚本将数据从MySQL数据库导入到工作表中。在导入过程中,其他具有重公式的工作表(vlookup、sumifs、filter)会不断重新计算,因此需要花费很长时间。我想在MySQL数据完全导入后,通过脚本插入公式。 为了简化此过程,我想将工作表上的所有公式(这是一个很长的工作表)提取到一个文件中,并将提取的数据格式化为以下方式:示例:从工作表“摘要”中提取数据: 循环检查工作表中的每个单元格

  • 我有一个GoogleApps电子表格,其中一列包含日期和时间。这张纸是由几张纸合并而成的。在某些行上,该值是一个日期(即typeof sheet.getRange(i,2).getValue()==“object”,带有日期的方法)。其他时间,此单元格是一个数字(即typeof sheet.getRange(i,2).getValue()=“number”),但单元格格式将单元格显示为一个日期。

  • 我有一个谷歌表单,在a列中,我需要用无替换按钮上的文本。该列在几个不同的行中具有需要保持不变的标题。我写了以下脚本: 当我尝试运行脚本时,会出现以下错误:数据中的行数与范围中的行数不匹配。数据有1,但范围有2。 我知道这与具有比其他行更多列的行有关,但不确定如何修复代码。

  • 有人能帮我把脚本布局转换成实际的功能代码吗?我有一般的编码知识,但我不知道正确的语法。 基本上,我需要的是一个脚本,当提交表单条目时,它会在所有工作表/选项卡之间循环。表单包含提交表单的人的姓名(字符串)、开始日期、结束日期,最后是注释字段(字符串)。 我需要脚本来遍历每个工作表的第5行,并查找在第一个表单字段中输入的字符串(提交表单的人的姓名)。如果它找到了该名称,它应该将与该名称对应的列保存到