質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Q&A

解決済

1回答

1812閲覧

GASを用いたgmailからスプレッドシートへの反映について

mogumog

総合スコア16

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

0グッド

0クリップ

投稿2019/05/06 23:18

編集2019/05/07 04:29

「重要」のラベルがついたGmailの内容をGASで自動的にスプレッドシートに書き出す処理について伺いたいです。

gmail

1ご注文番号 : A01905020554 2受付日時 : 2019/05/02 04:53:36 3============================== 4■ご注文内容 5------------------------------ 6商品名 : REX 7商品番号 : GO 8販売価格 : 1,980円 9数量 : 1 10 11小計 : 1,980円 12============================== 13商品合計 : 1,980円 (うち消費税:146円) 14送料 : 0円 15手数料 : 0円 16合計 : 1,980円

この本文から受付日時と合計のみを取り出すために

(スプレッドシートのスクリプトエディタで)

javascript

1function getMail(){ 2 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 3 var objSheet = objSpreadsheet.getSheetByName("シート1"); 4 var sheet = SpreadsheetApp.setActiveSheet(objSheet); 5 6 7 var start = 0; 8 var max = 500; 9 var threads = GmailApp.search('label:重要 is:unread',start,max); 10 var row = sheet.getLastRow() + 1; 11 12 for(var n in threads){ 13 var thd = threads[n]; 14 var msgs = thd.getMessages(); 15 16 for(var m in msgs){ 17 var msg = msgs[m]; 18 var body = msg.getBody(); 19 20 var date = body.match(/^受付日時 :\s*?:(.+)$/m)[1]; 21    var sum = body.match(/^商品合計 :\s*?:(.+)$/m)[1]; 22 sheet.appendRow([date, sum]); 23 24 25 } 26 thd.markRead(); 27 Utilities.sleep(1000); 28 } 29} 30 31

と打ち込んだら
TypeError: null からプロパティ「1」を読み取れません。(行 20、ファイル「コード」)
と反映されてしまいました。理想は2019/05/02 04:53:36と1,980円が反映されて欲しいです。
過去の質問、回答など参考にさせて頂きましたが、なかなかうまくいきませんでした。
もしよろしければどこが間違っているかご指摘願いたいです。よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/05/07 00:30

どこまでが メールの例で、どこまでがソースコードかわかりにくいので、 <code> ボタンを利用してマークダウンを用いてわかりやすく入力していただけないでしょうか? [ソースコードを書きましょう]( https://teratail.com/help/question-tips#questionTips3-5-1 )参考
mogumog

2019/05/07 01:34 編集

ご指摘ありがとうございます。マークダウンの利用をいたしました。 こちらでよろしいでしょうか?
guest

回答1

0

ベストアンサー

dateとsumの正規表現をそれぞれ以下のように直してください。
var date = body.match(/^受付日時\s*?:(.+)/m)[1];
var sum = body.match(/^商品合計\s*?:(.+)/m)[1];

投稿2019/05/07 04:56

hiroshi0240

総合スコア640

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mogumog

2019/05/07 05:03

本当にありがとうございます! うまくいきました! 何度もつまずきましたが、お陰様で目標のものが作れました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問