使用 Google 电子表格中的 ContactsApp

Using ContactsApp from a Google spreadsheet

概述: 当我在 GoogleAppsScript 函数中调用 ContactsApp.getContact() 时,当从脚本 运行 时该函数工作正常编辑。但是,当我尝试使用 Google 电子表格中的函数时,出现权限错误。如何解决此权限错误并通过电子表格中的自定义函数使用 ContactsApp?

详情: 我创建一个新的电子表格并打开脚本编辑器并定义以下简单函数:

function example() {
  ContactsApp.getContacts();
  return 5;
}

我第一次从脚本编辑器中 运行 时,系统提示我批准访问我的联系人。我批准了,函数 运行 就可以了。我可以添加日志记录并验证它是否按预期工作。

现在回到电子表格中,我在一个单元格中使用公式“=example()”,期望它将单元格的值设置为 5。相反,单元格显示“#ERROR!”将鼠标悬停在单元格上会显示详细的错误:

You do not have permission to call ContactsApp.getContacts. Required permissions: https://www.google.com/m8/feeds (line 2)

查看脚本的项目属性,我可以看到 https://www.google.com/m8/feeds 确实被列为必需的 oauth 范围。

如何解决此权限错误并通过电子表格中的自定义函数使用 ContactsApp?

我在这里的文档中找到了答案: https://developers.google.com/apps-script/guides/sheets/functions#advanced

Unlike most other types of Apps Scripts, custom functions never ask users to authorize access to personal data. Consequently, they can only call services that do not have access to personal data, specifically the following: Cache HTML JDBC Language Lock Maps Properties Spreadsheet URL Fetch Utilities XML

因此,目前不允许按照问题的要求在自定义函数中使用 ContactsApp,因为需要授权,而自定义函数不允许这样做。