GASでGmailからメールを取得→本文をPOSTでサーバに送信
というスクリプトを書いています。
メールの本文から抽出したメッセージが改行記号を認識していない様に見えます。
例えば、メール本文に
「テスト
2行目」
といったメールを送信し、ログで確認すると
「テスト2行目」
というメッセージになります。
しかし、
「テスト
3行目」
と送信すると
「テスト
3行目」
という状態です。
改行記号が1つの場合は無視し、2つ目の改行記号のみ認識しているように見えます。
1function myFunction() { 2 var threads = GmailApp.getInboxThreads(); 3 for (var th in threads) { 4 var msgs = threads[th].getMessages(); 5 for (var msg in msgs) { 6 if(msgs[msg].getSubject() == "テスト"){ 7 Logger.log(msgs[msg].getPlainBody());//メール本文をログに書き出す 8 var message = msgs[msg].getPlainBody(); 9 //置換テスト開始 10 let tikan = /\n/g; 11 message = message.replace(/\n\n/g,"\n"); 12 //置換テスト終了 13 14 var payload = 15 { 16 "message" : message 17 }; 18 19 var options = 20 { 21 "method" : "post", 22 "payload" : payload 23 }; 24 25 UrlFetchApp.fetch("POST受付サーバアドレス", options); 26 27 28 29 msgs[msg].markRead(); //メールを既読にする 30 msgs[msg].moveToTrash(); //メールを削除する 31 } 32 } 33 } 34} 35 36/* 参考 37 メールを取り出す「https://news.mynavi.jp/article/gas-4/」 38 メールを既読にする「https://qiita.com/ttyokoyama/items/1aa6977043fb0245342a」 39 GASでPOST送信「https://qiita.com/n0bisuke/items/a31a99232e50461eb00f」 40*/ 41
試したこと
- 上記の通り、改行を1つから2つにしたら1行改行を確認した
- 1行改行がGmailのメール本文では確認しているので、置換文字が1つのところは改行文字を2つにするテスト(コード内に記載)
ネットに記載されている解説を読むと、改行記号は\nと間違えていない様なので、メールの読み出しの時点で改行記号が消えているのかと思います。
(参考「https://auto-worker.com/blog/?p=1111」)
ネット上のサンプルを探してみていますが、スプレッドシートへの一部転記が多く、難航しています。
また、GASは初めて触るので調べ調べで試しています。少し、それもあって調べるのに難航しています。
ご教授、お力添え頂ければ幸いです。
追記
動作環境について
Windows 10上のGoogle ChromeでYahoo!メールから送信
改行記号が\r\nという回答をいただいたので\r\nでチャレンジ
・iPadからの送信時は\r\nで改行しているのを確認
・Windowsは\r\nではないのを確認(\rでも\nでもない)
改行記号が1つの場合は\nと判定されない。
改行記号が2つ続く場合は\nと判定される様子。
例1)「1行目
2行目」
>出力「1行目2行目」
例2)「1行目
3行目」
>出力「1行目
3行目」
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/11 07:58
2020/09/11 08:41
2020/09/11 16:14
2020/09/12 00:36
2020/09/12 04:26
2020/09/12 11:59 編集