Apps脚本错误-“执行失败:需要登录”

时间:2018-07-16 13:30:16

标签: google-apps-script google-sheets triggers

我的应用程序脚本文件中包含以下代码行,接着是一个基本的 onOpen()函数以构建菜单:

var listContainers = TagManager.Accounts.Containers.list('accounts/' + accountId);

注释掉该行代码后,便会创建菜单。但是,如果未注释掉该行,则不会创建菜单,并且脚本不会运行。

当我检查执行记录(查看->执行记录)时,我看到与上面显示的行相关的以下错误:

  

执行失败:需要登录

资源->高级Google服务下,我已打开标签管理器API,并且还在Google API控制台中启用了该API。 accountId 是我拥有的GTM帐户的一个。

这是清单文件的样子(查看->显示清单文件):

{
  "timeZone": "America/Mexico_City",
  "oauthScopes": [
    "https://www.googleapis.com/auth/script.container.ui",
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/tagmanager.delete.containers",
    "https://www.googleapis.com/auth/tagmanager.edit.containers",
    "https://www.googleapis.com/auth/tagmanager.edit.containerversions",
    "https://www.googleapis.com/auth/tagmanager.manage.users",
    "https://www.googleapis.com/auth/tagmanager.publish"
  ],
  "dependencies": {
    "enabledAdvancedServices": [{
      "userSymbol": "TagManager",
      "serviceId": "tagmanager",
      "version": "v2"
    }]
  },
  "exceptionLogging": "STACKDRIVER",
  "executionApi": {
    "access": "ANYONE"
  }
}

我觉得我的所有理由都在这里,所以我不明白为什么会出现需要登录错误。我已经在Google上搜索了一个解决方案,但找不到任何表明我做错了任何事情的信息。

任何想法都将不胜感激...谢谢!

1 个答案:

答案 0 :(得分:1)

全局变量无法访问需要授权的外部服务,就像onOpen和onEdit之类的简单触发器以及自定义函数无法访问它们一样。

如果您确实希望listContainers是全局变量,则可以通过执行以下操作在全局范围内对其进行初始化

var listContainers;

然后在用户界面或可安装的触发器调用的函数上,通过以下方式将标签管理器列表分配给该变量:

listContainers = TagManager.Accounts.Containers.list('accounts/' + accountId);