質問編集履歴

1

追加の質問

2022/05/15 13:39

投稿

hiiro_yuy
hiiro_yuy

スコア1

test CHANGED
@@ -1 +1 @@
1
- GAS 同じ添付ファイルを入手しないようにしたい
1
+ GAS 同じ添付ファイルを入手しないようにしたい 当日の添付ファイルを取得したい
test CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- インターネットから入手したGASのスクリプトです。 1分毎に実行したところ、すでにGoogleドライブへ取り込んだ添付ファイルを何回も取得してしまいます。一度、取得した添付ファイルを取得しないようにしたい。
2
+ インターネットから入手したGASのスクリプトです。 1分毎に実行したところ、すでにGoogleドライブへ取り込んだ添付ファイルを何回も取得してしまいます。一度、取得した添付ファイルを取得しないようにしたい。日付を取得し、過去の添付ファイルを取得しないようにしたい
3
3
 
4
4
  ```ここに言語を入力
5
5
  function FaxFileUploader() {
@@ -7,15 +7,30 @@
7
7
  //変数準備 (******には、GoogleドライブのID)
8
8
  var target_folder = DriveApp.getFolderById('**********');
9
9
  var query_condition = "label:未処理";
10
-
10
+ var sheetName = 'シート1'; // 記録するシートのタブ名
11
+ var messageIdSheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
12
+ if (messageIdSheet == null) {
13
+ console.log(`エラー:シート「${sheetName}」が見つかりませんでした。終了します。`);
14
+ return;
15
+ }
16
+ var lastRow = messageIdSheet.getLastRow();
17
+ var messageIds = lastRow > 0 ? messageIdSheet.getRange(1, 1, messageIdSheet.getLastRow(), 1).getValues().flat() : [];
11
18
  //処理対象メール取得
12
19
  var threads = GmailApp.search(query_condition);
13
20
  var messages = GmailApp.getMessagesForThreads(threads);
14
21
 
15
22
  if(messages.length > 0){
16
-
17
23
  for(var i = 0; i < messages.length; i++) {
18
24
  for(var j = 0; j < messages[i].length; j++) {
25
+ // メッセージIDを取得する。
26
+ const mid = messages[i][j].getId();
27
+ // すでに取得済みのメールであれば処理をスキップ。
28
+ if (messageIds.includes(mid)) {
29
+ continue;
30
+ }
31
+ // 取得したメッセージIDをシートに記録するとともに配列に加える。
32
+ messageIdSheet.appendRow([mid])
33
+ messageIds.push(mid);
19
34
  var attach = messages[i][j].getAttachments();
20
35
  for(var k = 0; k < attach.length; k++){
21
36
  target_folder.createFile(attach[k]);
@@ -27,9 +42,7 @@
27
42
  threads[i].removeLabel(label1);
28
43
  threads[i].addLabel(label2);
29
44
  }
30
-
31
45
  }
32
-
33
46
  }
34
47
  ```
35
48