Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 日历';s";事件更新";触发器isn';行不通_Google Apps Script_Triggers_Google Calendar Api - Fatal编程技术网

Google apps script 日历';s";事件更新";触发器isn';行不通

Google apps script 日历';s";事件更新";触发器isn';行不通,google-apps-script,triggers,google-calendar-api,Google Apps Script,Triggers,Google Calendar Api,当使用下面的代码更改我的Google日历事件时,我试图触发一个函数calendarScan() ScriptApp.newTrigger('calendarScan') .forUserCalendar(Session.getActiveUser().getEmail()) .onEventUpdated() .create(); 我不明白为什么扳机坏了。脚本是独立的。calendarScan()函数手动运行正常 衷心感谢你的帮助 要为用户拥有的所有日历创建日历,可以使用: 考虑到

当使用下面的代码更改我的Google日历事件时,我试图触发一个函数
calendarScan()

ScriptApp.newTrigger('calendarScan')
  .forUserCalendar(Session.getActiveUser().getEmail())
  .onEventUpdated()
  .create();
我不明白为什么扳机坏了。脚本是独立的。
calendarScan()
函数手动运行正常

衷心感谢你的帮助

要为用户拥有的所有日历创建日历,可以使用:

考虑到您的情况,这不应该有太多额外的开销。

要为用户拥有的所有日历创建一个日历,可以使用:



考虑到您的安全性,这应该不会有太多额外的开销。

Session.getActiveUser().getEmail()显示什么?我无法复制。当我为函数创建日历触发器时,当我在日历中添加/编辑/删除事件时,该函数将运行。“脚本是独立的”和“函数链接到的工作表”与创建给定触发器的函数不在同一脚本项目中是什么意思?“函数和触发器位于不同的项目中”不能为与创建触发器的函数不在同一脚本项目中的函数创建触发器。要为函数
calendarScan
创建日历事件触发器,
function calendarScan(){…}
必须与使用
ScriptApp.createTrigger(“calendarScan”)
的代码位于同一个项目中。这不是问题所在,我发现了问题。仅当对主日历进行更改时,触发器才能运行。您知道如果对辅助日历进行了更改,如何扩展触发器以允许使用触发器吗?我想您需要为相应的日历ID而不是与用户电子邮件关联的主日历创建触发器。
Session.getActiveUser().getEmail()
显示了什么?我无法复制。当我为函数创建日历触发器时,当我在日历中添加/编辑/删除事件时,该函数将运行。“脚本是独立的”和“函数链接到的工作表”与创建给定触发器的函数不在同一脚本项目中是什么意思?“函数和触发器位于不同的项目中”不能为与创建触发器的函数不在同一脚本项目中的函数创建触发器。要为函数
calendarScan
创建日历事件触发器,
function calendarScan(){…}
必须与使用
ScriptApp.createTrigger(“calendarScan”)
的代码位于同一个项目中。这不是问题所在,我发现了问题。仅当对主日历进行更改时,触发器才能运行。您知道如果对辅助日历进行了更改,如何扩展触发器以允许使用触发器吗?我想您需要为相应的日历ID而不是与用户电子邮件关联的主日历创建触发器。谢谢您。我只在谷歌应用程序脚本中使用过日历服务,所以我只知道GAS日历服务的类。你知道我在哪里可以找到包含“minAccessLevel”和“pageToken”的引用和文档吗?@Brandon I链接了该方法的API引用文档,
CalendarList::list
。它解释了这些(可选)输入参数的含义。您还可以随时查看API参考中的相关“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。这些名称通常不会晦涩难懂,或者-
minAccessLevel
->最低访问级别(请求用户)->所有者->“仅显示请求用户是其所有者的日历。”我将让您直观地了解
pageToken
nextPageToken
所做的事情,因为上面给出了我的代码。它应该是
ScriptApp.newTrigger(functionName)
谢谢@tehhowch,这真的很有用!谷歌文档有点简陋:这样的触发器“持久”吗,还是每次触发时都需要重置它们?@jean触发后,这些触发器应继续触发。您可以使用我示例中的代码验证这一点:授权它,运行
makeTriggers
方法,然后更新所属日历中的事件几次。您应该在stackdriver中查看触发事件的日志。注意t您成为所有者的任何新日历都不会自动注册触发器,因此您应该在运行函数操作之前删除现有触发器,以避免重复触发器。谢谢tehhowch。我只在Google应用程序脚本中使用过日历服务,所以我只知道GAS Calendar服务的类。您知道吗在哪里可以找到包含“minAccessLevel”和“pageToken”的引用和文档?@Brandon我链接了该方法的API引用文档,
CalendarList::list
。它解释了这些(可选)输入参数的含义。您也可以随时查看相关的“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuAPI参考中的页面-通常您会发现任何资源属性的描述。这些名称通常不会模糊,或者-
minAccessLevel
->(请求用户的)->所有者->仅显示请求用户所拥有的日历考虑到我上面的代码,我会让你凭直觉知道
pageToken
nextPageToken
做什么。它应该是
ScriptApp.newTrigger(functionName)
谢谢@tehhowch,这真的很有用!谷歌文档有点简略:这样的触发器“持久”吗,还是每次触发时都需要重置它们?@jean触发后,这些触发器应继续激发。您可以使用我的示例中的代码验证这一点:授权它,运行
makeTriggers
方法,然后更新所属日历中的事件几次。您应该在stac中查看触发事件的日志
function getOwnedCalendars_() {
  const options = {
    minAccessLevel: "owner", // freeBusyReader, reader, writer
    fields: "nextPageToken, items(id,summary,description)"
  };

  const cals = [];
  do {
    var search = Calendar.CalendarList.list(options);
    options.pageToken = search.nextPageToken;
    if (search.items && search.items.length)
      Array.prototype.push.apply(cals, search.items);
  } while (options.pageToken);
  return cals;
}
function giveMeTheTrigger(e) {
  console.log(e);
}
function makeTriggers() {
  getOwnedCalendars_().forEach(function (cal) {
    var t = ScriptApp.newTrigger("giveMeTheTrigger")
         .forUserCalendar(cal.id)
         .onEventUpdated()
         .create();
    console.log({message: "Created event trigger for calendar '" + cal.summary + "'",
                 desc: cal.description, id: cal.id, triggerId: t.getUniqueId()});
  });
}