首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何登录Gmail,使用Google AppScript发出HTTP请求

如何登录Gmail,使用Google AppScript发出HTTP请求
EN

Stack Overflow用户
提问于 2017-03-28 15:14:26
回答 1查看 1.2K关注 0票数 0

我有以下代码来使用使用HTTP描述的这里方法删除一些草稿:

代码语言:javascript
运行
复制
function cleanUp2() {
  var threads = GmailApp.search("in:trash is:draft");
  Logger.log(threads.length);

  var userId = 'xxxx@gmail.com';
  var options = {
   'method' : 'delete',
   'muteHttpExceptions': true
 };

  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    Logger.log(messages.length);

    for (var j = 0; j < messages.length; j++){
      if (messages[j].isDraft()){
        Logger.log('id msg: ' + messages[j].getId());
        var url = 'https://www.googleapis.com/gmail/v1/users/' + userId + '/messages/' + messages[j].getId();
        var response = UrlFetchApp.fetch(url,options);
        Logger.log(response);            
      }    
    }
  }
}

但是,获取的响应如下:

代码语言:javascript
运行
复制
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

因此,我的问题是如何登录Gmail以使HTTP请求正常工作?

EN

Stack Overflow用户

回答已采纳

发布于 2017-03-28 20:56:11

您需要在请求中发送授权头,如下所示:

代码语言:javascript
运行
复制
//Code above this remains the same
    var userId = 'kurokirasama@gmail.com';   
      var options = {
       'headers':{'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()},
       'method' : 'DELETE',
       'muteHttpExceptions': true
     };
//the code below remains the same

注ScriptApp.getOAuthToken()在这里工作,因为您的脚本进行了GmailApp调用,因此您的脚本具有访问GmailApp API的令牌。如果没有在脚本中调用GmailApp,令牌将没有访问Gmail的范围。

或者,您可以在APi中使用高级服务;Resoruces>Advance services > Gmail APi (on),并使用以下代码实现相同的结果:

代码语言:javascript
运行
复制
function cleanUp2() {
  var threads = GmailApp.search("in:trash is:draft");
  Logger.log(threads.length);

  var userId = 'kurokirasama@gmail.com';

  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    Logger.log(messages.length);

    for (var j = 0; j < messages.length; j++){
      if (messages[j].isDraft()){
        Logger.log('id msg: ' + messages[j].getId());
        Gmail.Users.Messages.trash(userId, messages[j].getId())
        Logger.log(response);            
      }    
    }
  }
}

希望这能有所帮助!

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43073380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档