Gmail API:异步标签更新/应用程序

时间:2015-07-16 19:00:12

标签: gmail gmail-api

我正在使用Users.messages:modify方法将标签应用于电子邮件,但是,我必须在以编程方式应用的标签出现在gmail用户界面之前刷新页面。

如果我手动选择gmail消息,然后从gmail屏幕顶部的下拉标签应用程序中应用标签,则所需的操作类似于:标签是异步应用的。这可以通过编程方式进行吗?

代码

var applyLabel = function (gapiRequestURL, labelIdsArr)
{

  $.ajax({
    url: gapiRequestURL,
    method: "POST",
    contentType: "application/json",
    data: JSON.stringify({
      addLabelIds: labelIdsArr
    }),
    success: function(msg){
      // alert(JSON.stringify(msg));
    },
    error: function(msg){
      alert("Error:" + JSON.stringify(msg));
    }
  })
}

var decideWhichLabelToApply = function(messageContentsArr){
  var testLabelOne = "Label_12"
  var testLabelTwo = "Label_13"
  var labelIdsArr = []

  for(var i=0; i < messageContentsArr.length; i++){
    var currentMessage = messageContentsArr[i]
    var messageID = currentMessage.id

    if (true){
      var labelModifyURL = "https://www.googleapis.com/gmail/v1/users/me/messages/" + messageID + "/modify?access_token=" + thisToken
      labelIdsArr.push(testLabelOne)
      applyLabel(labelModifyURL, labelIdsArr)
    }
    else {
      var labelModifyURL = "https://www.googleapis.com/gmail/v1/users/me/messages/" + messageID + "/modify?access_token=" + thisToken
      labelIdsArr.push(testLabelTwo)
      applyLabel(labelModifyURL, labelIdsArr)
    }
  }
}

1 个答案:

答案 0 :(得分:2)

不是我知道的。 Gmail网络界面执行一些惰性缓存,并且似乎没有注意到对底层数据的特别好的更改(即来自收件箱,IMAP,API等)。我相信它不需要完整的浏览器(F5)刷新但当然需要做一些UI操作,比如点击标签或点击网页内刷新图标以显示更新。