是否可以在Google Sheet Add On中创建时间驱动的触发器?

时间:2016-10-23 10:04:19

标签: google-apps-script add-on google-apps-marketplace

我正在开发Google表格的附加内容。这样做时我遇到了以下异常

Exception: The add-on attempted an action that is not permitted in Test as add-on mode. To use this action, you must deploy the add-on.

以下是我遇到异常的代码要点

function initiateCall()
{
  try
  {
    var sp = SpreadsheetApp.getActiveSpreadsheet();
    var sheet_obj = sp.getSheetByName(SHEET_NAME);
    var last_row = sheet_obj.getLastRow();
    var result = "failure";

    if(last_row >= 2)
    {
      Logger.log("Creating");
      var trigger_id = ScriptApp.newTrigger('triggerToInitiateCall').timeBased().after(100).create();
      Logger.log("Created");
      setProperty("trigger_id", trigger_id.getUniqueId());

      result = "success";
    }//if
    else
      result = "validation_failure";

    return result;
  }//try
  catch(e)
  {
    Logger.log("Exception=> "+e+" At Line Number "+e.lineNumber)
  }//catch
}//initiateCall

注意:   - 脚本在AuthMode.NONE模式下运行   - 脚本是独立脚本。

使用触发器的原因是使异步UrlFetch。

所以我有两个问题要问

  1. 是否可以通过Google App Script制作异步UrlFetch?
  2. 如果不是如何在Google Sheet Add On中创建时间驱动的触发器(另一种方法来制作异步UrlFecth)?
  3. 请帮忙。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

Google Apps脚本是同步的。附加组件可以使用基于时间的触发器,但它们每小时只能运行一次。

脚本中的运行时间为6分钟,如果可能,只需等待URLFetch返回即可。它是同步的,它将等待调用的返回值。

如果你真的需要一个异步调用,你不能等待URLFetch返回,使用每小时运行一次的触发器,或者创建一个侧边栏并在侧边栏的上下文中执行API调用,你有异步调用。