根据单元格内容定义收件人
Define recipient depending on cell content
我制作了一个脚本,可以在单击卡片按钮时将电子邮件转发给不同的人。这是代码的主要部分:
function forwardtest() {
var threadsa = GmailApp.search('label: Inbox label: product-a');
for (var i = 0; i < threadsa.length; i++) {
var recipient = 'producta@gmail.com';
var messages = threadsa[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var body = messages[j].getBody();
messages[j].forward(recipient,{htmlBody: body});
}
GmailApp.moveThreadToArchive(threadsa[i]);
}
var threadsb = GmailApp.search('label: Inbox label: product-b');
for (var i = 0; i < threadsb.length; i++) {
var recipient = 'productb@gmail.com';
var messages = threadsb[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var body = messages[j].getBody();
messages[j].forward(recipient,{htmlBody: body});
}
GmailApp.moveThreadToArchive(threadsb[i]);
}
}
有时,我们需要更改转发地址。因为我不希望人们直接在代码中更改它,所以我制作了一个 Google 表格,其中根据电子邮件标签列出了转发地址:
Product label
Forward address
product-a
producta@gmail.com
product-b
productb@gmail.com
有没有办法将 var recipient = 'producta@gmail.com';
替换为“查找包含“product-a”内容的单元格并将收件人定义为其旁边单元格中的内容”?
非常感谢您!
解决方案:
由于您将引用 Google Sheet 来获取数据,因此您需要从 SpreadsheetApp 开始使用 Sheets API class。此外,由于此脚本未附加到您的用例中的 sheet,因此您需要通过它的 ID 打开 sheet,它位于 URL link 中:
https://docs.google.com/spreadsheets/d/<SHEET-ID>/edit#gid=0
记下 SHEET-ID,因为我们将在代码中使用它。
对于代码本身,我制作了一个单独的函数来查找收件人和发送电子邮件以实现模块化:
编辑: 重新排列代码,将函数移到 for 循环中。
function forwardtest() {
var sheet = SpreadsheetApp.openById("SHEET-ID").getSheetByName("Sheet1");
var prodList = sheet.getRange(2,1,sheet.getLastRow()-1,2).getValues();
for (var k = 0; k < prodList.length; k++) {
var prod = prodList[k][0];
var recipient = prodList[k][1];
var threads = GmailApp.search('label: Inbox label: '+prod);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var body = messages[j].getBody();
messages[j].forward(recipient,{htmlBody: body});
}
GmailApp.moveThreadToArchive(threads[i]);
}
}
}
注意:将 SHEET-ID 替换为 URL 中的 sheet ID。
示例输出:
使用样本 table 和可变数量的产品:
参考文献:
我制作了一个脚本,可以在单击卡片按钮时将电子邮件转发给不同的人。这是代码的主要部分:
function forwardtest() {
var threadsa = GmailApp.search('label: Inbox label: product-a');
for (var i = 0; i < threadsa.length; i++) {
var recipient = 'producta@gmail.com';
var messages = threadsa[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var body = messages[j].getBody();
messages[j].forward(recipient,{htmlBody: body});
}
GmailApp.moveThreadToArchive(threadsa[i]);
}
var threadsb = GmailApp.search('label: Inbox label: product-b');
for (var i = 0; i < threadsb.length; i++) {
var recipient = 'productb@gmail.com';
var messages = threadsb[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var body = messages[j].getBody();
messages[j].forward(recipient,{htmlBody: body});
}
GmailApp.moveThreadToArchive(threadsb[i]);
}
}
有时,我们需要更改转发地址。因为我不希望人们直接在代码中更改它,所以我制作了一个 Google 表格,其中根据电子邮件标签列出了转发地址:
Product label | Forward address |
---|---|
product-a | producta@gmail.com |
product-b | productb@gmail.com |
有没有办法将 var recipient = 'producta@gmail.com';
替换为“查找包含“product-a”内容的单元格并将收件人定义为其旁边单元格中的内容”?
非常感谢您!
解决方案:
由于您将引用 Google Sheet 来获取数据,因此您需要从 SpreadsheetApp 开始使用 Sheets API class。此外,由于此脚本未附加到您的用例中的 sheet,因此您需要通过它的 ID 打开 sheet,它位于 URL link 中:
https://docs.google.com/spreadsheets/d/<SHEET-ID>/edit#gid=0
记下 SHEET-ID,因为我们将在代码中使用它。
对于代码本身,我制作了一个单独的函数来查找收件人和发送电子邮件以实现模块化:
编辑: 重新排列代码,将函数移到 for 循环中。
function forwardtest() {
var sheet = SpreadsheetApp.openById("SHEET-ID").getSheetByName("Sheet1");
var prodList = sheet.getRange(2,1,sheet.getLastRow()-1,2).getValues();
for (var k = 0; k < prodList.length; k++) {
var prod = prodList[k][0];
var recipient = prodList[k][1];
var threads = GmailApp.search('label: Inbox label: '+prod);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var body = messages[j].getBody();
messages[j].forward(recipient,{htmlBody: body});
}
GmailApp.moveThreadToArchive(threads[i]);
}
}
}
注意:将 SHEET-ID 替换为 URL 中的 sheet ID。
示例输出:
使用样本 table 和可变数量的产品:
参考文献: