目标:
使用Google脚本附加组件,我想将一些联系信息从Google电子表格推送到Google通讯录,而用户互动最少。
问题:
无论我做什么,我总是得到授权失败。
(注意:我翻译了来自法语的错误信息,这是我的语言,所以原来的英文信息可能略有不同。我也重新编号并打印代码)
1 function onInstall(e) {
2 onOpen(e);
3 }
4
5 function onOpen(e) {
6 var spreadsheetName = SpreadsheetApp.getActiveSpreadsheet().getName();
7 createContactsGroupIfNotExists(spreadsheetName);
8 }
9
10 function createContactsGroupIfNotExists(contactsGroupName) {
11 var group = ContactsApp.getContactGroup(contactsGroupName)
12
13 if(! group)
14 contactsGroup = ContactsApp.createContactGroup(contactsGroupName);
15
16 return group;
17 }
我可以解释我得到的第一个错误,因为脚本无法访问它链接到的电子表格。但是一旦启用(甚至启用并安装)脚本,它就不应该正确访问用户联系人。
Google documentation about authorizations表示onOpen()触发器在AuthMode.LIMITED中运行,可防止对用户数据进行不必要的访问。但我希望尽可能无声地运行脚本(例如只要求授权一次)。
有什么建议吗?
答案 0 :(得分:0)
对于第二个错误,即使启用了加载项,onOpen()
也无法访问user's data,因此您无法调用ContactsApp.getContactGroup(contactsGroupName)
。
您不必多次请求授权,只需在另一个功能中调用ContactsApp.getContactGroup(contactsGroupName)
(可能由add-on menu中的项目或sidebar中的按钮触发,或者dialog)