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

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

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

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

1回答

1215閲覧

【GAS】 メール本文の一部を抜き出してスプレッドシートに入力したい

usinafa

総合スコア0

Google スプレッドシート

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2021/04/03 15:16

前提・実現したいこと

①特定の件名のメール文章の項目を抜き出してスプレッドシートに入力
②タグをつけて次回以降の取り込みには入力されないようにしたいです。

発生している問題・エラーメッセージ

エラーメッセージはでないのですが、C列以降(会社名)の項目が入力されません。
どのようにしたら会社名以降も抽出ができますでしょうか。
よろしくお願いいたします。

該当のソースコード

function getMail() { var label = "問い合わせ"; var start = 0; var max = 100; return GmailApp.search('label:' + label, +start, max); } function myFunction() { // 検索条件に該当するスレッド一覧を取得 var threads = GmailApp.search('subject:お問い合せ -label:対応済み'); // スレッドを一つずつ取り出す threads.forEach(function(thread) { // スレッド内のメール一覧を取得 var messages = thread.getMessages(); // メールを一つずつ取り出す messages.forEach(function(message) { var date = message.getDate(); // メール本文を取得 var plainBody = message.getPlainBody(); // 会社名を取り出す var company = plainBody.match(/会社名: (.*)/); // 氏名を取り出す var name = plainBody.match(/氏名: (.*)/); // メールアドレスを取り出す var email = plainBody.match(/メールアドレス: (.*)/); // 電話番号を取り出す var tel = plainBody.match(/電話番号: (.*)/); // 内容を取り出す var context = plainBody.match(/内容: (.*)/); // 書き込むシートを取得 var sheet = SpreadsheetApp.getActive().getSheetByName('お問い合わせ'); // 最終行を取得 var lastRow = sheet.getLastRow() + 1; // セルを取得して値を転記 sheet.getRange(lastRow, 2).setValue(date); sheet.getRange(lastRow, 3).setValue(company); sheet.getRange(lastRow, 4).setValue(name); sheet.getRange(lastRow, 5).setValue(email); sheet.getRange(lastRow, 6).setValue(tel); sheet.getRange(lastRow, 7).setValue(context); }); // スレッドに処理済みラベルを付ける var label = GmailApp.getUserLabelByName('対応済み'); thread.addLabel(label); }); }
function getMail() { var label = "問い合わせ"; var start = 0; var max = 100; return GmailApp.search('label:' + label, +start, max); } function myFunction() { // 検索条件に該当するスレッド一覧を取得 var threads = GmailApp.search('subject:お問い合せ -label:対応済み'); // スレッドを一つずつ取り出す threads.forEach(function(thread) { // スレッド内のメール一覧を取得 var messages = thread.getMessages(); // メールを一つずつ取り出す messages.forEach(function(message) { var date = message.getDate(); // メール本文を取得 var plainBody = message.getPlainBody(); // 会社名を取り出す var company = plainBody.match(/会社名: (.*)/); // 氏名を取り出す var name = plainBody.match(/氏名: (.*)/); // メールアドレスを取り出す var email = plainBody.match(/メールアドレス: (.*)/); // 電話番号を取り出す var tel = plainBody.match(/電話番号: (.*)/); // 内容を取り出す var context = plainBody.match(/内容: (.*)/); // 書き込むシートを取得 var sheet = SpreadsheetApp.getActive().getSheetByName('お問い合わせ'); // 最終行を取得 var lastRow = sheet.getLastRow() + 1; // セルを取得して値を転記 sheet.getRange(lastRow, 2).setValue(date); sheet.getRange(lastRow, 3).setValue(company); sheet.getRange(lastRow, 4).setValue(name); sheet.getRange(lastRow, 5).setValue(email); sheet.getRange(lastRow, 6).setValue(tel); sheet.getRange(lastRow, 7).setValue(context); }); // スレッドに処理済みラベルを付ける var label = GmailApp.getUserLabelByName('対応済み'); thread.addLabel(label); }); }
こちらはメール本文です XXXXXXXXXXXXX様より、 下記お問い合せが届いています。 ==詳細=============== 会社名: XXXXXXXXXXX 氏名: XXXXXXx メールアドレス: XXXXXXXXXXXX 電話番号: XXXXXXXXXXXX 内容: XXXXXXXXXXXXxx ====================

試したこと

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

提示のコードを正規表現の部分を私のメールの内容に合せて修正したものに修正して
テストしてみた所、問題なく表示されました。

その為、正規表現の部分が間違っているのではないでしょうか。

例えば /会社名: (.*)/ ですが、コード上では : の後にスペースが入ってますが
実際のメールには会社名:~というように : の後にスペースが入っていないのではないでしょうか。

と推測したのですが如何でしょうか。

投稿2021/04/03 21:57

xail2222

総合スコア1508

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問