我的应用程序脚本文件中包含以下代码行,接着是一个基本的 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上搜索了一个解决方案,但找不到任何表明我做错了任何事情的信息。
任何想法都将不胜感激...谢谢!
答案 0 :(得分:1)
全局变量无法访问需要授权的外部服务,就像onOpen和onEdit之类的简单触发器以及自定义函数无法访问它们一样。
如果您确实希望listContainers
是全局变量,则可以通过执行以下操作在全局范围内对其进行初始化
var listContainers;
然后在用户界面或可安装的触发器调用的函数上,通过以下方式将标签管理器列表分配给该变量:
listContainers = TagManager.Accounts.Containers.list('accounts/' + accountId);