首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用onOpen触发器脚本来改变谷歌工作表的行为?

如何使用onOpen触发器脚本来改变谷歌工作表的行为?
EN

Stack Overflow用户
提问于 2019-06-25 05:13:53
回答 1查看 834关注 0票数 1

根据下面某人的建议,我正在编辑这篇文章:

我最初的目标是在打开我的Google工作表时,每次打开它时,我希望将当前位于单元格A10、A15和A20中的几个数据验证下拉菜单的值设置为"Select“选项--这是验证范围中的一个单词,以及其他两个文本值。

我被告知这需要在全球范围内声明--但我是一个完全的脚本新手,坦率地说,我不知道如何实现这一点。

我们将非常感谢您的任何建议。

代码语言:javascript
复制
function onOpen() {
    SpreadsheetApp.getActiveSheet().getRange('A10').setValue('Select');
    SpreadsheetApp.getActiveSheet().getRange('A15').setValue('Select');
    SpreadsheetApp.getActiveSheet().getRange('A20').setValue('Select');
EN

回答 1

Stack Overflow用户

发布于 2019-06-25 09:00:25

经过一些测试,我能够让它工作。正如鲁本所说,onOpen,onEdit不能在任何其他函数中。它们指定了已经存在的操作,因此当执行onOpen或onEdit操作时,打开或编辑电子表格时,脚本将自动运行。

您可以查看有关应用程序脚本触发器https://developers.google.com/apps-script/guides/triggers的更多信息,但在这种情况下,onEdit将在每次更新任何单元格时运行,除非您通过使用事件对象指定要运行脚本的单元格以获取更多信息,请查看https://developers.google.com/apps-script/guides/triggers/events

对于此特定场景,由于您希望脚本在单元格更新时运行,因此必须使用e.range.getA1Notation()检查该单元格是否正在更新。getA1Notation()以A1表示法返回范围。有关更多信息,请查看https://developers.google.com/apps-script/reference/spreadsheet/range#getA1Notation()。下面的示例将帮助您理解以下脚本。

代码语言:javascript
复制
    function onOpen(e){

  var app = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = app.getActiveSheet();  
  sheet.getRange("A2:A2").clearContent();
  sheet.getRange("A10:A10").setValue("Select");
  sheet.getRange("A15:A15").setValue("Select");
  sheet.getRange("A20:A20").setValue("Select");
}



function onEdit(e){

  var app = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = app.getActiveSheet();
  var A2 = sheet.getRange("A2:A2");

  console.log(e.range.getA1Notation());
  if (e.range.getA1Notation() === "A2"){

    console.log("A2 Updated");
    sheet.getRange("A10:A10").setValue('Select');
  sheet.getRange("A15:A15").setValue('Select');
  sheet.getRange("A20:A20").setValue('Select');

  } 
}

onOpen函数将在每次打开电子表格时运行,而onEdit函数将在单元格"A2“每次更改其值时执行。基本上,您正在检查使用A1表示法的范围是否等于" A2“,然后它将在if语句中运行代码,否则该函数将被执行,但不会执行任何操作,因为单元格A2仍然没有任何更改。通过这样做,我不确定是否有这种执行的限制,但这是你可以进一步调查的事情,我认为它不会影响,因为这应该在客户端运行,而不是在服务器端。

我希望这能帮上忙,问候。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56744023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档