的OnOpen功能不起作用正确(onOpen-function doesn't work c

2019-11-01 11:06发布

脚本编辑器:写了一个脚本用的OnOpen功能(见下文)。 当与脚本编辑器启动时,它工作正常。 当打开电子表格开始的时候,我得到的语句31的日志“Logger.log(名)”,没有什么事情发生。 为什么?

下面是完整的脚本:

function onOpen() {
  n0="T22 ";
  n1=n0+"aktuell"
  n2=n0+"Master"
  var y1=DayShift();
  Browser.msgBox("Returned with "+y1);
};

function DayShift() { 
  var dt=Browser.inputBox("Datum (YYMMDD) eingeben");
  if (dt=="cancel" || dt.length !=6) return("Input "+dt);

  var f1=GetFL(n1,0);
  if (f1=="cancel") return("F1 cancel");
  Logger.log(f1);
  var Rx=f1.getSheetByName("Sheet1").getRange("B9").getValue();
  f1.rename(n0+dt);
  Logger.log(Rx);
  Logger.log(f1.getName()+" finished");

  var f2=GetFL(n2,1);
  if (f2=="cancel") return("F2 cancel");
  Logger.log(f2);
  f2.getSheetByName("Sheet1").getRange("B7").setValue(Rx);
  Logger.log(f1.getName()+" finished");

  return("OK");
};

function GetFL(name,typ) {
  Logger.log(name);
  var fx = DocsList.find(name);
  Logger.log(name+" = "+fx.length);
  if (fx.length != 1)  return("cancel");
  if (typ==1) {
    var fy=fx[0].makeCopy(n1);
  } else {
    var fy=fx[0];
  };
  fy=SpreadsheetApp.openById(fy.getId());
  Logger.log(fy);
  return (fy);
};

Answer 1:

运行onOpen从脚本编辑器对待任何其他脚本。 运行它作为一个简单的触发功能不会允许访问已超出DocsList API,因为这不能匿名运行。 即使你已经授权了脚本来运行,简单的触发器匿名运行,某些API将不允许这样做。

在这种情况下onOpen (和onEdit )静默失败。

它不会修复这个给你,但解释可以在中找到GAS文件 。

它可以是令人沮丧/神秘,当你第一次遇到这样的,但也有它周围的方式即使这意味着从运行菜单命令或按钮的脚本:既赋予该脚本的用户的身份。



Answer 2:

作为补充,乔纳森的回答,您可以使用安装onOpen触发的,而不是简单的一个。 只要给此功能的另一名以避免混淆,例如IonOpen()或任何...在安装触发器没有限制乔纳森提。 查看文档使用容器的具体安装的触发器



文章来源: onOpen-function doesn't work correct