GASとスプレッドシートでGmailから任意のタイトルのメアドを一括取得するツールを作る
例えば昨日の自社のサービスに契約した方にアンケートやサンキューメールを送りたい、申込み件数を簡単に把握したい、というようなときに使えるGAS x スプレッドシートで作るメアド一括取得ツールの作り方をご紹介します!
この記事は以下の方向けの内容です。
- エンジニアに頼まずにあれこれしたい
- 開発とかしないでコピペでサクッとやりたい
- 各ファネルのユーザー情報をデータベースから拾って料理するのしんどい
今回の記事の内容と以下の記事の内容を組み合わせると、メールアドレスを一括取得してBccメールで一気にクロスマーケティングや追いメールなどができます。
スプレッドシートを用意する
まっさらなシートを用意してもらえれば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" > 送信元のメールアドレスを記載してください。
終わりに
変更する場所は3行のみという簡単スクリプトです。
僕は以下の記事の内容と組み合わせて毎日ユーザーアンケートを送ったり、今月の申込者数などを計測に使っています。