Gmail API:异步标签 update/application

Gmail API: asynchronous label update/application

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

所需的操作类似于我手动 select 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)
    }
  }
}

据我所知没有。 Gmail 网络界面做了一些惰性缓存,似乎没有特别注意底层数据的变化(即来自收件箱、IMAP、API 等)。我相信它不需要完整的浏览器 (F5) 刷新 但肯定需要执行一些 UI 操作,例如点击标签或点击网页内刷新图标更新显示。