インターネットから入手したGASのスクリプトです。 1分毎に実行したところ、すでにGoogleドライブへ取り込んだ添付ファイルを何回も取得してしまいます。一度、取得した添付ファイルを取得しないようにしたい。日付を取得し、過去の添付ファイルを取得しないようにしたい
function FaxFileUploader() { //変数準備 (******には、GoogleドライブのID) var target_folder = DriveApp.getFolderById('**********'); var query_condition = "label:未処理"; var sheetName = 'シート1'; // 記録するシートのタブ名 var messageIdSheet = SpreadsheetApp.getActive().getSheetByName(sheetName); if (messageIdSheet == null) { console.log(`エラー:シート「${sheetName}」が見つかりませんでした。終了します。`); return; } var lastRow = messageIdSheet.getLastRow(); var messageIds = lastRow > 0 ? messageIdSheet.getRange(1, 1, messageIdSheet.getLastRow(), 1).getValues().flat() : []; //処理対象メール取得 var threads = GmailApp.search(query_condition); var messages = GmailApp.getMessagesForThreads(threads); if(messages.length > 0){ for(var i = 0; i < messages.length; i++) { for(var j = 0; j < messages[i].length; j++) { // メッセージIDを取得する。 const mid = messages[i][j].getId(); // すでに取得済みのメールであれば処理をスキップ。 if (messageIds.includes(mid)) { continue; } // 取得したメッセージIDをシートに記録するとともに配列に加える。 messageIdSheet.appendRow([mid]) messageIds.push(mid); var attach = messages[i][j].getAttachments(); for(var k = 0; k < attach.length; k++){ target_folder.createFile(attach[k]); } } var label1 = GmailApp.getUserLabelByName('未処理'); var label2 = GmailApp.getUserLabelByName('処理済'); threads[i].removeLabel(label1); threads[i].addLabel(label2); } } }
回答1件
あなたの回答
tips
プレビュー