Google apps script 一旦附件上传到硬盘,更改Gmail标签
如何删除现有标签“Global Alcohol”&并使用以下代码将“Global Processed”标签添加到已将附件上载到Google Drive的电子邮件中?我必须感谢库珀,他回答了我的第一个问题,帮助我完成了上传 函数saveAttachmentFolder(){ var folder=DriveApp.getFolderById('xxxxxxxxxxxx'); var userId=”myemail@gmail.com"; var query=“标签:全局酒精”; var res=Gmail.Users.Messages.list(userId,{q:query});//我假设这是可行的 res.messages.forEach(函数(m){ var attA=GmailApp.getMessageById(m.id).getAttachments(); 附件forEach(功能(a){ var ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(),“yyMMddHHmmss”); folder.createFile(a.copyBlob()).setName(a.getName()+ts); }); });Google apps script 一旦附件上传到硬盘,更改Gmail标签,google-apps-script,gmail-api,Google Apps Script,Gmail Api,如何删除现有标签“Global Alcohol”&并使用以下代码将“Global Processed”标签添加到已将附件上载到Google Drive的电子邮件中?我必须感谢库珀,他回答了我的第一个问题,帮助我完成了上传 函数saveAttachmentFolder(){ var folder=DriveApp.getFolderById('xxxxxxxxxxxx'); var userId=”myemail@gmail.com"; var query=“标签:全局酒精”; var res=
}您的修改调用是正确的,但是格式有点不正确。这里的诀窍是您需要使用标签ID,因此我编写了一个新函数
getLabelsByName()
,允许您执行该查找
function saveAttachmentInFolder(){
var folder = DriveApp.getFolderById('xxxxxxxxxxxxx');
var userId = "myemail@gmail.com";
var query = "label:Global Alcohol";
var labels = getLabelsByName(userId, ["Global Alcohol", "Global Processed"]);
var res = Gmail.Users.Messages.list(userId, {q: query});//I assumed that this works
res.messages.forEach(function(m){
var attA=GmailApp.getMessageById(m.id).getAttachments();
attA.forEach(function(a){
var ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(), "yyMMddHHmmss");
folder.createFile(a.copyBlob()).setName(a.getName()+ts);
});
// Remove the old label & add the new one
Gmail.Users.Messages.modify({
addLabelIds: [labels["Global Processed"].id],
removeLabelIds: [labels["Global Alcohol"].id]
}, userId, m.id);
});
}
/**
* Lookup any number of labels by their name using the advanced Gmail service.
* @param {String} userId - The user's email address or "me" to get your own
* @param {String[]} labelNames - An array of labels names to search for
* @returns {Label{}} - Map of labels identified by label name
* https://developers.google.com/gmail/api/v1/reference/users/labels
*/
function getLabelsByName(userId, labelNames) {
var response = Gmail.Users.Labels.list(userId);
var selectedLabels = {};
for (var i = 0; i < response.labels.length; i++) {
var label = response.labels[i];
if (labelNames.indexOf(label.name) != -1) {
selectedLabels[label.name] = label;
}
}
return selectedLabels;
}
函数saveAttachmentFolder(){
var folder=DriveApp.getFolderById('xxxxxxxxxxxx');
var userId=”myemail@gmail.com";
var query=“标签:全局酒精”;
var labels=getLabelsByName(userId,[“全局酒精”,“全局处理”]);
var res=Gmail.Users.Messages.list(userId,{q:query});//我假设这是可行的
res.messages.forEach(函数(m){
var attA=GmailApp.getMessageById(m.id).getAttachments();
附件forEach(功能(a){
var ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(),“yyMMddHHmmss”);
folder.createFile(a.copyBlob()).setName(a.getName()+ts);
});
//删除旧标签并添加新标签
Gmail.Users.Messages.modify({
AddLabelId:[标签[“全局已处理”].id],
removeLabelIds:[标签[“全球酒精”].id]
},userId,m.id);
});
}
/**
*使用高级Gmail服务按标签名称查找任意数量的标签。
*@param{String}userId-用户的电子邮件地址或“我”来获取您自己的电子邮件地址
*@param{String[]}labelNames-要搜索的标签名称数组
*@returns{Label{}}-由标签名标识的标签映射
* https://developers.google.com/gmail/api/v1/reference/users/labels
*/
函数getLabelsByName(userId,labelNames){
var-response=Gmail.Users.Labels.list(userId);
var selectedLabels={};
对于(var i=0;i