几个月来我一直在努力解决这个问题,而且情况越来越糟。
我在Google Apps脚本中有一个简单的程序,该程序可以从工作表中获取电子邮件地址,并将其放入相应的Google联系人组中。直到一个月左右才停止工作,它就可以正常工作。
请帮助我
1)了解我是否真的需要使用API来完成我正在做的事情。
2)在下面检查我的工作,以防我遗失某些东西。
原始问题:
运行此代码时,出现错误消息:“您无权执行该操作。”
function testAddEmail(){
ContactsApp.createContact(null, null, "tomfoolery@validemailaddress.com");
};
要解决此问题,我已经: -确保在我的Cloud Console中启用了Contacts API。 -禁用并重新启用它多次。 -使用该程序创建了一个新文件,并启用了新的Contacts API。 -为新计划创建凭证(此凭证在此日期之后有效了一天)。 -与Google Cloud支持和G Suite支持联系,以确保设置正确(它们不支持脚本或联系人。)
问题2:
我尝试添加Oauth 2代码,但现在它给了我错误“您无权调用getActiveSpreadsheet。”
他们的问题在下面的我的Oauth 2代码中吗? (我删除了我的个人信息。)
function getContactsService() {
// Create a new service with the given name. The name will be used when
// persisting the authorized token, so ensure it is unique within the
// scope of the property store.
return OAuth2.createService('contacts')
// Set the endpoint URLs, which are the same for all Google services.
.setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
// Set the client ID and secret, from the Google Developers Console.
.setClientId('blablabla.apps.googleusercontent.com')
.setClientSecret('blablabla')
// Set the name of the callback function in the script referenced
// above that should be invoked to complete the OAuth flow.
.setCallbackFunction('authCallback')
// Set the property store where authorized tokens should be persisted.
.setPropertyStore(PropertiesService.getUserProperties())
// Set the scopes to request (space-separated for Google services).
.setScope('https://www.google.com/m8/feeds')
.setScope('https://www.googleapis.com/auth/spreadsheets')
// Below are Google-specific OAuth2 parameters.
// Sets the login hint, which will prevent the account chooser screen
// from being shown to users logged in with multiple accounts.
.setParam('login_hint', Session.getActiveUser().getEmail())
// Requests offline access.
.setParam('access_type', 'offline')
// Forces the approval prompt every time. This is useful for testing,
// but not desirable in a production application.
.setParam('approval_prompt', 'force');
}
答案 0 :(得分:0)
您是否登录了多个Google帐户?这通常会导致授权问题。尝试注销所有内容,然后重新登录到一个帐户。
这是在触发器上运行还是您在手动运行公式?
电子表格的所有者是所有者吗?您是否正在电子表格的容器绑定脚本中运行此测试?
如果您是电子表格的所有者,并且只是将自己的电子表格中的电子邮件地址添加到自己的Gmail帐户中,则无需使用API或OAuth协议。
正如另一位评论者所述,您要求的范围是什么?要仅从电子表格中设置一个简单的脚本来添加联系人,您可能只需要列出的两个即可。您可以通过选择视图->显示清单文件来手动设置它们。例如:
Serving Flask app "hello_world" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 985-433-141