我想以编程方式在Google脚本中的gmail中更改单个电子邮件的标签。我无法使用标准的GmailApp service,因为它会将操作应用于整个线程,而不是单个电子邮件。我已经找到了一些使用高级Gmail API(Search/replace labels in specific messages (not the whole thread) with Google Apps Script)完成此操作的示例。但是我还没有成功。我不断收到以下错误:
提供的参数数量无效。仅预期3-4(第5行,文件 “测试”)
以下是我在Google脚本编辑器中尝试过的代码段:
function changeLabel() {
var addLabel = '3to-smartsheetstest';
var removeLabel = '3to-smartsheets';
var msgId = '142b7c52e4cc4619';
var msgLabel = Gmail.Users.Messages.modify({
'userId': 'me',
'id': messageId,
'resource':{
'addLabelIds': [addlabel],
'removeLabelIds': [removelabel]
}
})
}
Google's resource documentation表示要针对javascript构建这样的参数:
'userId': userId,
'id': messageId,
'addLabelIds': labelsToAdd,
'removeLabelIds': labelsToRemove
但是似乎实际上需要采用这种结构(在此处的错误报告中进行了澄清:https://github.com/google/google-api-nodejs-client/issues/312):
'userId': 'some email address',
'id': 'some message id',
'resource':{
'addLabelIds': ['some label id'],
'removeLabelIds': []
}
无论哪种方式,我都会遇到相同的错误。
答案 0 :(得分:0)
此修改如何?
Gmail.Users.Messages.modify()
的变量拼写。
messageId
修改为msgId
。addlabel
修改为addLabel
。removelabel
修改为removeLabel
。Gmail.Users.Messages.modify()
一样使用Gmail.Users.Messages.modify(resource, userId, id)
。您可以通过脚本编辑器的自动完成功能看到它。var msgLabel = Gmail.Users.Messages.modify({
'userId': 'me',
'id': messageId,
'resource':{
'addLabelIds': [addlabel],
'removeLabelIds': [removelabel]
}
})
至:
var msgLabel = Gmail.Users.Messages.modify({
'addLabelIds': [addLabel],
'removeLabelIds': [removeLabel]
}, 'me', msgId);
如果我误解了你的问题,对不起。