お世話になります。
現在、以下のスクリプトを書き終えて、テストを行っています。
function myFunction() {
var lock = LockService.getScriptLock();
if (lock.tryLock(1)) {
var start = new Date();
var condition;
condition = " is:unread" //未読
condition += " has:attachment"; //添付あり
var search_mail = GmailApp.search(condition);
var messages = GmailApp.getMessagesForThreads(search_mail);
var hozon_folder = DriveApp.getFolderById('GoogleドライブのフォルダID');
for(const thread of messages) {
for(const message of thread) {
if (message.isUnread()) {
var attachments = message.getAttachments();
var day = message.getDate();
var strDay = Utilities.formatDate(day , "JST", "yyyy_MM_dd_HH_mm_ss");
for(const attachment of attachments) {
var filename = strDay + '_' + attachment.getName();
hozon_folder.createFile(attachment);
var file = hozon_folder.getFilesByName(attachment.getName())
file.next().setName(filename);
}
message.markRead();
var end = new Date();
var time_past = (end - start) / 1000;
if (time_past > 240) {
Logger.log("実行時間が規定の時間を経過しました。スクリプトを終了します");
lock.releaseLock();
return 0;
}
}
}
}
Logger.log("正常に処理を完了しました。スクリプトを終了します");
lock.releaseLock();
} else {
Logger.log("二重起動になります。スクリプトを終了します");
}
}
仕様としては、未読のメールに添付されているファイルをGoogleドライブの
特定のフォルダに保存すると言った物です。
恐縮ですが、以下の点についてご教示いただければ幸いです。
1. このスクリプトにsleepを2行入れて10分間スリープするようにしスクリプトが
タイムアウトするようにしました。タイムアウトまでの時間を計測したところ
6分でタイムアウトしたとエラーが出力されています。Googleのquotasを参照
したところ「
Script runtime
」が6分、「
Custom function runtime
」が30秒と
規定されています。自作のPGなので「
Custom function runtime
」が適用され
ると思っていたのですが、相違ないでしょうか?
2. 「
Triggers total runtime
」ですが、この制限値はトリガーにより起動された
PGの処理の総時間と捉えて良いのでしょうか?また、その場合、制限値のリ
セットが行われるタイミングは0:00(日付が変わるタイミング)であっています
でしょうか?
お手数をおかけいたしますが、返信いただければ幸いです。
よろしくお願い致します。