Google Apps 脚本正在替换内容,而不是将文本附加到草稿内容
Google Apps Script is replacing content instead of appending text to the draft contents
这是我的尝试,但是,我无法更新草稿 -- 我希望在保留草稿内容、收件人和主题的同时添加文本 "This Message has been verified"。
function dlpValidate(e) {
var toEmails = e.draftMetadata.toRecipients, ccEmails = e.draftMetadata.ccRecipients, bccEmails = e.draftMetadata.bccRecipients, domains = [], uniqueDomains = [];
var allEmails = toEmails.concat(ccEmails, bccEmails);
for (var i = 0; i < allEmails.length; i++) {
domains[i] = allEmails[i].split("@").pop().split(".")[0];
}
uniqueDomains = domains.filter(listUnique);
if(uniqueDomains.length == 1 || (uniqueDomains.length <= 2 && uniqueDomains.indexOf("verasafe") != -1)) {
var draft = GmailApp.getDrafts()[0];
draft.update(toEmails,"test","This Message has been verified");
return [notifyYes(uniqueDomains)];
}
}
@param {event} e 是撰写触发器事件对象,在选择撰写操作时触发的撰写触发器函数内:Reference。
这是在主函数中调用的函数listUnique
:
function listUnique(value, index, self) { return self.indexOf(value) === index; }
正如目前编写的那样,该函数完全替换了草稿内容,而不是附加它。此外,它还会删除 CC and/or BCC 字段下的收件人,并将它们放在 TO 字段中。
GmailDraft.update
替换草案 中的所有当前内容,如 the official documentation 中所述。您必须重新设置所有内容(主题、内容、收件人、抄送、密件抄送等)。
因此,如果您只想将消息 "This Message has been verified" 附加到内容中,而您希望保持其他所有内容不变,您应该首先检索有关当前草稿的数据,然后附加您想要的任何内容这些数据,最后用附加数据更新草稿。
您可以按照以下方式进行操作:
function dlpValidate(e) {
var toEmails = e.draftMetadata.toRecipients,
ccEmails = e.draftMetadata.ccRecipients,
bccEmails = e.draftMetadata.bccRecipients,
domains = [],
uniqueDomains = [];
var allEmails = toEmails.concat(ccEmails, bccEmails);
for (var i = 0; i < allEmails.length; i++) {
domains[i] = allEmails[i].split("@").pop().split(".")[0];
}
uniqueDomains = domains.filter(listUnique);
if(uniqueDomains.length == 1 || (uniqueDomains.length <= 2 && uniqueDomains.indexOf("verasafe") != -1)) {
var draft = GmailApp.getDrafts()[0];
var message = draft.getMessage();
var subject = message.getSubject();
var content = message.getBody();
// Append "This Message has been verified" to the current draft body
content = content.concat("<div>This Message has been verified</div>");
var options = { // Set cc, bcc and body for the updated draft
bcc: bccEmails.join(","),
cc: ccEmails.join(","),
htmlBody: content
}
draft.update(toEmails, subject, content, options); // Update draft
return [notifyYes(uniqueDomains)];
}
}
参考
希望对您有所帮助。
这是我的尝试,但是,我无法更新草稿 -- 我希望在保留草稿内容、收件人和主题的同时添加文本 "This Message has been verified"。
function dlpValidate(e) {
var toEmails = e.draftMetadata.toRecipients, ccEmails = e.draftMetadata.ccRecipients, bccEmails = e.draftMetadata.bccRecipients, domains = [], uniqueDomains = [];
var allEmails = toEmails.concat(ccEmails, bccEmails);
for (var i = 0; i < allEmails.length; i++) {
domains[i] = allEmails[i].split("@").pop().split(".")[0];
}
uniqueDomains = domains.filter(listUnique);
if(uniqueDomains.length == 1 || (uniqueDomains.length <= 2 && uniqueDomains.indexOf("verasafe") != -1)) {
var draft = GmailApp.getDrafts()[0];
draft.update(toEmails,"test","This Message has been verified");
return [notifyYes(uniqueDomains)];
}
}
@param {event} e 是撰写触发器事件对象,在选择撰写操作时触发的撰写触发器函数内:Reference。
这是在主函数中调用的函数listUnique
:
function listUnique(value, index, self) { return self.indexOf(value) === index; }
正如目前编写的那样,该函数完全替换了草稿内容,而不是附加它。此外,它还会删除 CC and/or BCC 字段下的收件人,并将它们放在 TO 字段中。
GmailDraft.update
替换草案 中的所有当前内容,如 the official documentation 中所述。您必须重新设置所有内容(主题、内容、收件人、抄送、密件抄送等)。
因此,如果您只想将消息 "This Message has been verified" 附加到内容中,而您希望保持其他所有内容不变,您应该首先检索有关当前草稿的数据,然后附加您想要的任何内容这些数据,最后用附加数据更新草稿。
您可以按照以下方式进行操作:
function dlpValidate(e) {
var toEmails = e.draftMetadata.toRecipients,
ccEmails = e.draftMetadata.ccRecipients,
bccEmails = e.draftMetadata.bccRecipients,
domains = [],
uniqueDomains = [];
var allEmails = toEmails.concat(ccEmails, bccEmails);
for (var i = 0; i < allEmails.length; i++) {
domains[i] = allEmails[i].split("@").pop().split(".")[0];
}
uniqueDomains = domains.filter(listUnique);
if(uniqueDomains.length == 1 || (uniqueDomains.length <= 2 && uniqueDomains.indexOf("verasafe") != -1)) {
var draft = GmailApp.getDrafts()[0];
var message = draft.getMessage();
var subject = message.getSubject();
var content = message.getBody();
// Append "This Message has been verified" to the current draft body
content = content.concat("<div>This Message has been verified</div>");
var options = { // Set cc, bcc and body for the updated draft
bcc: bccEmails.join(","),
cc: ccEmails.join(","),
htmlBody: content
}
draft.update(toEmails, subject, content, options); // Update draft
return [notifyYes(uniqueDomains)];
}
}
参考
希望对您有所帮助。