【发布时间】:2022-10-05 04:15:11
【问题描述】:
我有一些我正在重新利用的生产代码。目前,它根据 gmail 标签处理所有内容,并将指定部分放入电子表格中。这不会改变(尽管如果那是最好的解决这个问题的方法)。
我现在需要处理一个子集这些消息的一部分,并将消息正文的一部分放入电子表格中。 正文如下:
This is an email alarm.
Room Lights OFF.
(其他示例可能会说“房间灯打开”、“警报”或“确定”。
我只需要得到身体的一部分后“房间灯”。
此 gmail 标签中还包括根本不提及“房间灯”的电子邮件。这些应该被忽略而不是添加到电子表格中。 例子:
This is an email alarm.
Network has returned.
或者
This is an email alarm.
Generator is OFF.
问题:如何编辑我的代码以便仅将“房间灯”电子邮件添加到电子表格中?
示例代码:
function lightFunction() {
newMonth();
var label = GmailApp.getUserLabelByName(\"Lights\");
var label2 = GmailApp.getUserLabelByName(\"Processed\");
var threads = label.getThreads();
var data = new Array();
var newData = new Array();
var alarmKeys = \"This is an email alarm.\";
var keys = alarmKeys.split(\",\");
var range = \"A2:B\";
// get all the email threads matching label
for (var i = 0; i < threads.length; i++) {
var messages = GmailApp.getMessagesForThread(threads[i]);
// archive thread
// label2.addToThread(threads[i]);
// label.removeFromThread(threads[i]);
// get each individual email from the threads
for (var j = 0; j < messages.length; j++) {
var bodyText = messages[j].getPlainBody();
for (k in keys) {
bodyText = bodyText.replace(keys[k], \"\");
}
bodyText = bodyText.trim();
var date = messages[j].getDate(); // date/time
var lines = [date, bodyText];
// Turn the first element in the array into a date element, format it, and put it back
lines[0] = Utilities.formatDate(new Date(lines[0]), \"America/Phoenix\", \"M/d/yy HH:mm:ss\");
// Put the array to a new item in the data array for further processing
if (curMonth == (new Date(lines[0]).getMonth())) {
data.push(lines);
}
}
}
checkAdd(data, range);
}
标签: google-apps-script gmail-api