GAS ウェブマーケ

GASとスプレッドシートでGmailから任意のタイトルのメアドを一括取得するツールを作る

2020年6月28日

こんにちは!非エンジニアでウェブマーケターの木庭です @koba_tokyodays
例えば昨日の自社のサービスに契約した方にアンケートやサンキューメールを送りたい、申込み件数を簡単に把握したい、というようなときに使えるGAS x スプレッドシートで作るメアド一括取得ツールの作り方をご紹介します!

この記事は以下の方向けの内容です。

  • エンジニアに頼まずにあれこれしたい
  • 開発とかしないでコピペでサクッとやりたい
  • 各ファネルのユーザー情報をデータベースから拾って料理するのしんどい

今回の記事の内容と以下の記事の内容を組み合わせると、メールアドレスを一括取得してBccメールで一気にクロスマーケティングや追いメールなどができます!

参考Google Apps ScriptとスプレッドシートでBcc一括送信ツールを作ってみよう!

こんにちは!非エンジニアでウェブマーケターの木庭です @koba_tokyodays ! 例えば申込者や契約者の方にアンケートや何かしらのメールを送りたい、でも開発とか工数かけられないという方向けにス ...

続きを見る

スプレッドシートを用意する

まっさらなシートを用意してもらえればOKです。

自動送信スクリプトを設定する

スプレッドシート>ツール>スクリプトエディタを選択してください。

【コピペ用】メール一括取得用スクリプト

function xxx() {
  // 要空白のスプレッドシートで実行
  //////
  // change your condition
  const title_s = "xx"// 取得したいメールのタイトルを正しく記載する
  const date_s = "after:2020/3/1 before:2020/4/30" // beforeはその日を含まない。 format 2020/m/d
  const from_s = "xx@xx" // 送信元のメールアドレス
  const LIMIT_MAX_SEARCH = 1000 // 1日5万件の制限あり
  //////
  const title_s2 = "subject:(" + title_s + ")"
  const from_s2 = "from: " + from_s
  const search_condition = from_s2 + " " + date_s + " " + title_s2
  var sheet = SpreadsheetApp.getActiveSheet();
  var n = 0
  const GMAIL_MAX_GET = 500
  messages_out = [['to','title']]
  console.log("L17")
  do {
    // GmailApp.search(search_condition, start_position, max=500)
    var threads = GmailApp.search(search_condition, n, GMAIL_MAX_GET)
    console.log("L21")
    for (var t in threads) {
      // GAS has bug of using `const` and `let` inside for-loop. only `var` is acceptable.
      var thread = threads[t]
      var msgs = thread.getMessages()
      console.log("L26")
      for (var m in msgs) {
        var msg = msgs[m]
        var to_ = msg.getTo()
        var title_ = msg.getSubject()
        messages_out.push([to_, title_])
      }
    }
    n = n + GMAIL_MAX_GET
  } while (threads.length > 0 && n <= LIMIT_MAX_SEARCH)
  if (messages_out.length === 0) return;
  sheet.getRange('A1:B' + messages_out.length).setValues(messages_out)
}

要修正箇所

  • function xxx()のxxxは好きに書いてください。
  • const title_s = "xx" > xxは取得したいメールのタイトルを正しく記載してください。
  • const date_s = "after:2020/3/1 before:2020/4/30" >取得したい期間を設定してください。beforeはその日を含みません。
  • const from_s = "xx@xx" >  送信元のメールアドレスを記載してください。

挙動テスト

自分がAmazonで購入し、Amazonから自分に届いたメールを一括取得します。

条件

  • メールタイトル:Amazon.co.jp ご注文の確認
  • 期間:after:2020/3/1 before:2020/6/29
  • 送信元:digital-no-reply@amazon.co.jp

※今回は個人メアドで行うため、toはすべて自分宛てになりますが、自社からユーザーに送信しているメールの場合は、スプレッドシートにユーザーのメアドが記載されます。

※メールタイトルは正しく記載しない場合、記載内容が含まれているタイトルをすべて回収するので、確実に欲しいメールについては正確な内容を記載してください。

スクリプトを設定

設定後、スクリプト画面内の▶から実行します。

許可を求められるのでOKを進めていきます。

※まれに安全ではないページと表示されますが、左下の詳細>ページに進むを選択してください。

スクリプトが正しく走れば、以下の状態に戻ります。

スプレッドシートを確認する

正しく取得できました。

終わりに

変更する場所は3行のみという簡単スクリプトです。

メアドをひとつひとつコピペしてると手間もかかるし、時間の無駄ですよね。

僕は以下の記事の内容と組み合わせて毎日ユーザーアンケートを送ったり、今月の申込者数などを計測に使っています。

是非使ってみてください!

参考Google Apps ScriptとスプレッドシートでBcc一括送信ツールを作ってみよう!

こんにちは!非エンジニアでウェブマーケターの木庭です @koba_tokyodays ! 例えば申込者や契約者の方にアンケートや何かしらのメールを送りたい、でも開発とか工数かけられないという方向けにス ...

続きを見る

-GAS, ウェブマーケ
-, ,