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

回答編集履歴

1

コメントした分を追記。

2019/09/26 02:22

投稿

suama
suama

スコア1997

answer CHANGED
@@ -25,4 +25,39 @@
25
25
  blobFile.setName(newName);
26
26
 
27
27
  fol.createFile(blobFile);
28
- ```
28
+ ```
29
+
30
+ ### 追記
31
+
32
+ (コメントにも添えましたが追記します)
33
+ リネームはそこまで大変じゃなさそうなので、問題はメール本文から``Order No,************``を抽出するところですね。
34
+
35
+ (1) 未読メールを配列で取得 -> (2) ループで1つずつメールをチェック -> (3) さらにメールに添付ファイルがあればそれをループで処理、という流れかと思います。
36
+
37
+ (2)のところで、メールのbodyに対してパターンマッチで番号を取得してあげるといいとは思います。
38
+
39
+ クラスメソッド様の記事が近いかもしれませんので貼っておきます。
40
+ https://dev.classmethod.jp/etc/google-app-script-gmail-filter/
41
+
42
+ 試してないので、ほんとうに参考程度になりますが、こんなイメージです。
43
+
44
+ ```JavaScript
45
+ // メールの1メッセージに対しての処理
46
+ var body = message.getBody();
47
+ var OrdeNo = body.match(パターンマッチの文字列);
48
+
49
+ var attach = message.getAttachments();
50
+
51
+ // 添付ファイルを扱う部分のループ
52
+ for(var k = 0; k < attach.length; k++){
53
+ var blobFile = attach[k];
54
+ var originalName = blobFile.getName();
55
+ var newName = originalName + OrdeNo;
56
+ blobFile.setName(newName);
57
+
58
+ fol.createFile(blobFile);
59
+ }
60
+
61
+ ```
62
+
63
+ パターンマッチの書き方はそんなに難しくないと思います。慣れないうちは、まず ``body.match(/Order No,1234/)`` みたいに、ちゃんとメール本文に存在するオーダー番号を直書きして、正しく抽出できるかチェックしながら進めるといいと思います。