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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

1回答

1284閲覧

GAS G-mail→スプレッドシートへの転記方法

touma1014

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/08/25 09:19

編集2022/08/25 09:21

GAS G-mail→スプレッドシートへの転記方法

登録フォームより下記の本文中から以下の情報を抽出し、
スプレッドシートへ転記したいのですが全く動作しません...
拾いのコードで作成中ですが、誰かご教示いただけませんでしょうか?

・uid
・お名前
・電話番号
・広告コード
・顧客コード


【REMOTE_HOST】: テスト
【REMOTE_ADDR】: テスト
【USER_AGENT 】: テスト
【HTTPREFERER】: テスト

【 uid 】: テスト
【お名前】: テスト太郎
【電話番号】: 08012341234
【広告コード】: テスト
【顧客コード】: テスト
【th_f】: テスト
【site_id】: テスト
【email】: 123456@exampl.com

(受付日時:2022/08/24 14:19:33 )

function myFunction(){ // 抽出条件指定 let query = 'subject:【登録通知】登録フォーム'; //問合せごとの情報が要素になった二次元配列を取得 let gmail = getGmail(query); // 書き込むシートを取得、アクティブシートを取得しているが任意のシートでOK let sheet = SpreadsheetApp.getActive().getActiveSheet(); //要素ごとにappendRowメソッドを呼び出して最終行に書き込む繰り返し処理を実行 gmail.forEach(info => sheet.appendRow(info)); } function getGmail(query) { //Gmail取得ここから //Gmailの履歴からマッチするメールを一覧化 var threads = GmailApp.search('subject:【登録通知】登録フォーム'); let gmailInfo = []; let array = []; //一覧化したメールの件数分繰り返し threads.forEach(function(thread) { // スレッド内のメール一覧を取得 let messages = thread.getMessages(); // メールを一つずつ取り出す messages.forEach(function(message) { // メール本文 let plainBody = message.getPlainBody(); // Logger.log(plainBody); // uid let uid = plainBody.match(/【 uid 】:(.*)/); // Logger.log(uid); // お名前 let name = plainBody.match(/お名前】:(.*)/); // Logger.log(name); // 電話番号 let tel = plainBody.match(/【電話番号】:(.*)/); // Logger.log(tel); // 広告コード let fld1 = plainBody.match(/【広告コード】:(.*)/); // Logger.log(fld1); // 顧客コード let fld2 = plainBody.match(/【顧客コード】:(.*)/); // Logger.log(fld2); //各メール情報を組みとした二次元配列として格納 gmailInfo.push([uid[1],name[1],tel[1],fld1[1],fld2[1]]); }); }); return(gmailInfo); }

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

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

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

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

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

guest

回答1

0

「全く動作しない」がどのようなごご状況かわかりかねますが、メール本文とコードを見比べたところ、メール本文と一致するようにmatchメソッドの引数がきちんと指定できていないようです。
plainBody.match(/:/)のコロン(:)が、メール内だと半角(:)なのに対して、コード内は全角(:)になっていませんか?
matchメソッドで文字列が抽出できていないため、各情報の変数nullが返され、pushメソッド呼び出し時にエラーが起きているのだと思います。

投稿2022/08/31 10:14

Tetsuooo

総合スコア15

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

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

touma1014

2022/09/01 03:43

ご指摘ありがとうございます。 コロンを半角に修正しましたところ下記エラーが表示されました... 12:39:07 エラー TypeError: Cannot read property 'getActiveSheet' of null myFunction @ コード.gs:10 シートの取得ができていない、ということでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問