質問するログイン新規登録

質問編集履歴

2

問題が一つ解決したためもう一つのみの質問題名、および解決していない問題点のみの質問内容へと記載を変更しました

2021/10/22 15:59

投稿

mixa3328
mixa3328

スコア0

title CHANGED
@@ -1,1 +1,1 @@
1
- gasを利用しgmail本文の一部をスプレッドシートに書き込む方法について
1
+ gasを利用しgmail本文の文字列(繰り返し)すべてスプレッドシートに抽出する方法
body CHANGED
@@ -29,23 +29,8 @@
29
29
  ◇利用金額:680円
30
30
  ```
31
31
  とあった場合、**上の26日の支払い分しかスプレッドシートに抽出できない**
32
- また、
33
32
 
34
- ```
35
-  ○○様
36
33
 
37
- いつもカードをご利用頂きありがとうございます。
38
- お客様のカードご利用明細の内容をお知らせいたします。
39
-
40
- ご利用カード:○○
41
-
42
- ◇利用日:2021/10/26
43
- ◇利用取引:買物
44
- ◇利用金額:990円
45
-
46
- ```
47
- とあった場合、**「利用先」の文面がないためエラーが発生し止まる**
48
-
49
34
  ### 該当のソースコード
50
35
 
51
36
  ```googleappsscript
@@ -59,24 +44,34 @@
59
44
  const QUERY = '-subject:' + SUBJECT + '-subject:'+ SUBJECT2 + ' from:' + ADDRESS + ' -label:' + LABEL_NAME + ' label:' + LABEL_NAME2 ;
60
45
 
61
46
  // メールを検索
62
- threads = GmailApp.search(QUERY);
47
+ var threads = GmailApp.search(QUERY);
63
48
 
64
49
  // 該当メールがあった場合
65
50
  if(threads.length > 0) {
66
- const KEYWDS = ['利用日:', '利用先:', '利用金額:'];
51
+ const KEYWDS = ['利用日:', '利用先:', '利用金額:', '利用取引:'];
67
52
  const LABEL = GmailApp.getUserLabelByName(LABEL_NAME);
68
53
 
69
- msgs = GmailApp.getMessagesForThreads(threads);
54
+ var msgs = GmailApp.getMessagesForThreads(threads);
70
- sheet = SpreadsheetApp.getActiveSheet();
55
+ var sheet = SpreadsheetApp.getActiveSheet();
71
56
 
72
57
  for(i=0; i<msgs.length; i++){
73
58
  // 本文を取得
74
59
  Body = msgs[i][0].getBody();
60
+ if(Body.match(/利用先:.*/)){
61
+
62
+
75
63
  sheet.appendRow([
76
- Body.match(/利用日:.*/)[0].replace(KEYWDS[0], ''),
64
+ Body.match(/利用日:.*/g)[0].replace(KEYWDS[0], ''),
77
65
  Body.match(/利用先:.*/)[0].replace(KEYWDS[1], ''),
78
66
  Body.match(/利用金額:[\d,]+/)[0].replace(KEYWDS[2], ''),
79
67
  ]);
68
+ }else{
69
+ sheet.appendRow([
70
+ Body.match(/利用日:.*/g)[0].replace(KEYWDS[0], ''),
71
+ Body.match(/利用取引:.*/)[0].replace(KEYWDS[3], ''),
72
+ Body.match(/利用金額:[\d,]+/)[0].replace(KEYWDS[2], ''),
73
+ ]);
74
+ }
80
75
  // 処理の完了後、ラベルを付与
81
76
  threads[i].addLabel(LABEL);
82
77
  };
@@ -97,17 +92,17 @@
97
92
  この質問での最終目標は、
98
93
 
99
94
 
100
- **二個ある決済記録を両方スプレッドシートに書き込む**
95
+ **二個ある決済記録を両方別々にスプレッドシートに書き込む**
101
96
 
102
- **「利用先」の文面がないときは空白で続きの作業を行ってほしい**
103
97
 
104
- この二点です。
105
98
 
99
+ この1点です。
106
100
 
107
101
 
102
+
108
103
  ### 補足情報(FW/ツールのバージョンなど)
109
104
 
110
- 元のソースコードは
105
+ 改変元のソースコードは
111
106
  こちらの
112
107
  > @shika-e様作成のクレジットカード利用明細を自動で作るGoogle Apps Script
113
108
  > 引用テキストhttps://qiita.com/shika-e/items/2e88df51b748c85fbd15

1

ジャンル変更

2021/10/22 15:59

投稿

mixa3328
mixa3328

スコア0

title CHANGED
File without changes
body CHANGED
File without changes