函数onOpen()未运行

use*_*058 15 triggers google-sheets google-apps-script

我的功能包括为文档添加菜单和烤面包.我已经验证了触发器(onOpen)也已设置好.它仅在用户进入"工具","脚本管理器","运行"时才有效.我们有太多的用户,背景太多,以至于不知道如何做到这一点.为什么不工作?(使用Chrome)

function onOpen()
{
  var menus = [{name: "Advance in Workflow", functionName:"sendEmail"}];

     SpreadsheetApp.getActiveSpreadsheet().addMenu("Auto Advance FG Workflow", menus);

  //sheet.toast(Notify/Remind users);
   sheet.toast("While you are here we kindly ask that you do not add, modify or remove     any columns.","Welcome - " + username,8);
 }
Run Code Online (Sandbox Code Playgroud)

谢谢,

Edu*_*sso 31

我遇到了同样的问题.

我意识到,有时Google会创建某种脚本缓存(我习惯使用"测试"脚本,而且我通常会更改它的内容,有时,脚本会像我没有那样运行).

所以,我所做的解决了onOpen()不起作用的是更改函数名称和手动触发触发器.

转到当前脚本的触发器......"">

转到"资源 - >当前脚本的触发器......"

选择要在打开时运行的功能

选择要在打开时运行的功能

它在这里像一个魅力!

更新的位置信息: 来自工具栏 要么 从菜单栏

然后

触发选择

  • 我尝试了自己的技巧,并没有解决问题.它只有在我删除所有不在函数内部的变量之后才能工作......我不知道,为什么,但它解决了问题. (3认同)

Har*_*old 9

这是一个旧帖子,但我刚遇到这个问题,并找出为什么它在我的情况下不能正常工作:我在我的脚本文件的顶部有一个变量需要一些授权并且阻止脚本正确运行.我看到OP调用var username = Session.getActiveUser().getUsername();(需要授权,这可能是原因).

例如:此代码不起作用:

function onOpen(){
  SpreadsheetApp.getUi()
  .createMenu("Exportation")
  .addItem("Lancer l'exportation", "exportationMenu")
  .addToUi();
}
var stConsCons= SpreadsheetApp.openById(sgcid).getSheetByName("Consultant");
Run Code Online (Sandbox Code Playgroud)

但是这个会起作用:

function onOpen(){
  SpreadsheetApp.getUi()
  .createMenu("Exportation")
  .addItem("Lancer l'exportation", "exportationMenu")
  .addToUi();
}

function whatever(){
  var stConsCons= SpreadsheetApp.openById(sgcid).getSheetByName("Consultant");
...}
Run Code Online (Sandbox Code Playgroud)


小智 7

原来需要将onOpen(e)函数添加到Triggers中!

图片描述在这里


Riv*_*omo 5

就我而言, onOpen 不起作用,因为我在函数之外有一个变量,用SpreadsheetApp.openById()而不是打开一个工作表SpreadsheetApp.getActiveSpreadsheet()openById()我想即使您要打开的工作表绑定到脚本,onOpen 也不起作用。onOpen()不适用于函数外部的此类变量:

var sheet = SpreadsheetApp.openById("1b_PQD...").getSheetByName("demos")
Run Code Online (Sandbox Code Playgroud)

如果您的脚本绑定到工作表,则可以使用该getActiveSpreadsheet()函数解决此问题。否则,您可以通过将openById()调用放入函数中来解决它。


Eri*_*eda 0

看来问题可能是“sheet”未定义,这就是 toast 失败的原因。