, если я использую SpreadsheetApp.getActiveSpreadsheet()
, это работает, но я не могу запустить этот скрипт с минутным триггером, потому что у него нет активной электронной таблицы.я попытался использовать SpreadsheetApp.openByUrl()
, который запускается вручную в редакторе сценариев, а также без ошибок запускается из минутного триггера.
моя проблема в том, что на моем реальном листе не обновляются ячейки, которые он должен выводитьна.я думаю, что это не помечает электронные письма как прочитанные, но я уже получаю так много постоянно, что в настоящее время это трудно проверить.
https://jsfiddle.net/29Ls3me4/1/
function myFunction() {
//var ss = SpreadsheetApp.getActiveSpreadsheet();
var ss = SpreadsheetApp.openByUrl("https://docs.google*****************************/edit");
var sheet = ss.getSheetByName("sheet1");
var threads = GmailApp.search ('label:unread "Thank you for your order!" -fwd: -re: -failure'); //search string
for (var i=0; i<threads.length; i++)
{
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++)
{
var msg = messages[j].getPlainBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
var to = messages[j].getTo();
var dateString =
dat.getUTCFullYear() + "/" +
("0" + (dat.getUTCMonth()+1)).slice(-2) + "/" +
("0" + dat.getUTCDate()).slice(-2);
var name = messages[j].getSubject();
var invoicenumber = name.match(/\d/g);
if(invoicenumber == null){
invoicenumber = "null";
} else {
invoicenumber = invoicenumber.join("");
}
ss.appendRow([invoicenumber, dateString, to, sub, msg])
}
threads[i].markRead();
//threads[i].markUnread();
}
}