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

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

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

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

Gmail

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

Google Apps Script

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

メール

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

611閲覧

Google App Scriptを使って、Gmailの本文内のURLをスプレッドシートに抽出したい。

退会済みユーザー

退会済みユーザー

総合スコア0

Google スプレッドシート

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

Gmail

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

Google Apps Script

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

メール

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2020/06/28 03:36

前提・実現したいこと

お世話になります。
Web上のお問い合わせフォームで入力いただいた内容をGmailに送信、
Google App Scriptを使って、Gmailの中からお問い合わせで届いたメールを抽出、そのメールの内容(お名前、住所、電話番号など)をSpread Sheetのセル内にそれぞれ抽出し、さらに抽出した内容をLINE Notifyを使って、LINEにも送信という仕様です。

そこで、お問い合わせで入力いただいたURLだけ抽出できずに困っています。
Google App Scriptのコードが間違っているか、他のやり方がありましたらどなたか教えていただけると幸いです。

何卒よろしくお願い致します。

参考にしたサイト
https://mikan.lunarscape.net/2018/10/report-cardinfo.html#toc4

Gmail例
イメージ説明

スプレッドシート例

function myFunction() { var sheet = SpreadsheetApp.getActiveSheet(); var query = 'label:お問い合わせ is:unread'; var threads = GmailApp.search(query, 0, 100); var messages = GmailApp.getMessagesForThreads(threads); for(var i=0; i < messages.length; i++) { for(var j=0; j < messages[i].length; j++) { var mes = messages[i][j], body = mes.getPlainBody(); if ( body.match(/.*?:/) == null) continue; var name = fetchData(body, '会社名'), address = fetchData(body, '住所'), phone = fetchData(body, '電話番号'), url = fetchData(body, 'ウェブサイト'); sheet.appendRow([name, address ,phone ,url ]); mes.markRead(); var lineMes = "\n" + "\n" + "【お客様情報】" + "\n" + "会社名:" + name + "\n" + "住所:" + address + "\n" + "電話番号:" + phone + "\n" + "ウェブサイト:" + url; sendLineNotify(lineMes); } } } function fetchData(str, label) { var reg = new RegExp(label + '.*?:.*\r'); var data = str.match(reg)[0] .replace(/^.*: /, '') .replace(/\r/, ''); return data; } function sendLineNotify(message){ var token = 'LINE Notifyのトークンが入ります'; var options = { 'method' : 'post', 'payload' : 'message=' + message, 'headers' : {'Authorization' : 'Bearer '+ token} }; UrlFetchApp.fetch('https://notify-api.line.me/api/notify',options); }

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

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

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

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

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

papinianus

2020/06/29 07:54

> URLだけ抽出できずに これってどういう事象ですか? 他のは取得できている? Line に通知がきたとき、文字がかけている? スプレッドシートに appendrow しているはずですが、それもない?? メールは手書きですよね。サンプルを質問に追記いていただけますか?(記号類の全角半角が気になるため) あと、\r が改行文字なのですが、メールはどうやって作ってますか?
guest

回答1

0

URLが最終行にあるので、末尾に「\r」がついていないのでは。
試しに、bodyの末尾に\rを付けてから動かしてみてはいかがでしょう。

投稿2020/06/28 05:24

編集2020/06/28 05:31
Daregada

総合スコア11990

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

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

退会済みユーザー

退会済みユーザー

2020/06/28 06:05

ありがとうございます。 ボディの末尾に\rを付けてみたのですが反映されません。 また、URLが最終行にならないように、電話番号とURLの位置を交換してもできませんでした。
Daregada

2020/06/28 06:12

できませんでしたではなく、fetchData()で何が返されてくるかぐらいの情報は提供してくださいな。あと、bodyで取り出した内容をテキストとして提示してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問