У меня есть следующий скрипт, чтобы прочитать информацию из моего электронного письма и заполнить информацию в листе Google.В большинстве случаев в метке Pending будет одно электронное письмо (скрипт должен запускаться каждую минуту), но независимо от этого скрипт не извлекает информацию из метки Pending.По какой-то причине, лист заполняет информацию из метки «Готово».Кроме того, он заполняет повторяющиеся значения.Есть идеи, что здесь может быть не так?
Например, допустим, у ярлыка Pending есть электронная почта johndoe@gmail.com, а у метки Done есть электронная почта joesmith@gmail.com, скрипт извлекает информацию изэлектронная почта joesmith@gmail.com, хотя она уже обработана.Johndoe@gmail.com будет по-прежнему переходить с «Ожидание» на «Готово», но правильная информация не будет передаваться.
// Modified from http://pipetree.com/qmacro/blog/2011/10/automated-
email-to-task-mechanism-with-google-apps-script/
// Globals, constants
var LABEL_PENDING = "Example Label/PENDING";
var LABEL_DONE = "Example Label/DONE";
// processPending(sheet)
// Process any pending emails and then move them to done
function processPending_(sheet) {
// Date format
var d = new Date();
var date = d.toLocaleDateString();
// Get out labels by name
var label_pending = GmailApp.getUserLabelByName(LABEL_PENDING);
var label_done = GmailApp.getUserLabelByName(LABEL_DONE);
// The threads currently assigned to the 'pending' label
var threads = label_pending.getThreads();
// Process each one in turn, assuming there's only a single
// message in each thread
for (var t in threads) {
var thread = threads[t];
// Gets the message body
var message = thread.getMessages()[0].getBody();
var recipient = thread.getMessages()[0].getTo();
// Processes the messages here
orderinfo = message.split("example split");
rowdata = orderinfo[1].split(" ");
// Add message to sheet
sheet.appendRow([rowdata[1], recipient]);
// Set to 'done' by exchanging labels
thread.removeLabel(label_pending);
thread.addLabel(label_done);
}
}
// main()
// Starter function; to be scheduled regularly
function main_emailDataToSpreadsheet() {
// Get the active spreadsheet and make sure the first
// sheet is the active one
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.setActiveSheet(ss.getSheets()[0]);
// Process the pending emails
processPending_(sh);
}