使用带有Gmail API的Google Apps脚本设置电子邮件签名

时间:2017-03-07 14:36:37

标签: google-apps-script gmail-api

我尝试设置执行脚本的用户的Gmail签名(执行应用程序:"用户访问网络应用程序&#34 ;; 谁可以使用以下功能访问应用"我的域内的任何人"):

function setSignature(signature) {  
  var newSig = Gmail.newSendAs();
  newSig.signature = signature;
  Gmail.Users.Settings.SendAs.patch(newSig, "me", Session.getActiveUser().getEmail());
}

其中签名是一些HTML。提交表单时,从客户端脚本调用此函数:

google.script.run.withSuccessHandler(signatureSuccess).setSignature($("#signatureParent").html());

使用包含表单的HtmlService为用户提供Web应用程序。 Gmail API已在高级Google服务窗口和Google API控制台中启用。

我的问题是,当我尝试执行该功能时,我收到以下控制台错误消息:

enter image description here

该消息指出缺少auth范围 gmail.settings.basic 。尽管用户在提供任何html之前授权了Web应用程序,但这仍然存在:

enter image description here

如何修复或解决此问题?奇怪的是我之前有过这样的工作,所以我不知道自己做错了什么。

修改

我注意到如果我只使用以下功能创建一个简单的Apps脚本:

function testSet() {  

  var testSig = "signature";
  var newSig = Gmail.newSendAs();
  newSig.signature = testSig;
  Gmail.Users.Settings.SendAs.patch(newSig, "me", Session.getActiveUser().getEmail());
}

请忽略我获得的所有其他权限以授权:

enter image description here

如果我点击允许就可以了!如此清楚"管理您的基本邮件设置" a.k.a. auth范围 gmail.settings.basic 是必需的,并且在更复杂的脚本中要求不是

那么我该如何强制获取该权限,或者如何重写我的脚本以获得所需的正确权限集?

1 个答案:

答案 0 :(得分:1)

经过大量测试后,我确定此问题是Google Apps脚本中确定需要哪些范围的错误。

我的脚本的基本版本需要这些范围(文件>项目属性>范围):

enter image description here

扩展脚本以与Google云端硬盘进行互动会将范围修改为:

enter image description here

通过删除所需的 gmail.settings.basic 范围,脚本中的关键功能将被拒绝运行。真气。