Google Apps Scriptで自動でメールリストを作成し、自動送信する方法

注意
  • ルートディレクトリ直下のrobots.txtがある場合はそれを見て、Webスクレイピングが可能かを確認しましょう
  • 利用規約を見て、禁止事項ではないか、確認しましょう

メールリストの作成と送信は、効果的な事業活動を行う上で欠かせない要素です。

しかし、手動でリストを作成し、一人ひとりにメールを送る作業は非効率的で時間のかかるものです。

そこで、本記事では自動化の方法をご紹介します。WebスクレイピングやGoogle Apps Script、自動メール送信ツールの活用など、具体的な手法を解説します。

自動化によって、メールのリスト作成と送信が簡単かつ効率的に行えるようになります。この記事を通じて、事業活動の効果を最大化するための自動化手法を学んでみましょう。

お客様

メールリスト300件ほど取得したいけれども、どのようにしたらいいのかわからない…

やす

私が解決します!

この記事でわかること
  • メールリストの自動収集方法
  • Webスクレイピングによるデータ収集
  • Google Apps Scriptの使い方

メールリストの重要性と自動化のメリット

事業活動において、効果的なメールマーケティングは欠かせない要素です。メールリストは、潜在的な顧客や既存の顧客との関係を構築し、ビジネスの成果を最大化するための貴重な資産です。なぜなら、正確でターゲットに合ったメールリストを持つことで、パーソナライズされたメッセージを効率的に配信し、関心を持つ顧客にアプローチすることができるからです。

しかし、手動でメールリストを作成する作業は非効率的で時間のかかるものです。名前や連絡先の情報を一つずつ集め、手作業でリストを作成するには膨大な作業量が必要です。さらに、手動で送信する場合、メールのパーソナライズやタイミングの最適化も困難です。

ここで自動化のメリットが現れます。自動化によって、メールリストの作成と送信を効率化し、生産性を向上させることができます。具体的には、以下のようなメリットがあります。

  1. 時間と労力の節約: 自動化によって、手動でリストを作成するために費やされる時間と労力を大幅に削減できます。データの収集や整理、メールの送信までを自動化することで、担当者は他の重要な業務に集中することができます。
  2. 正確性と一貫性の向上: 自動化によって、データの正確性と一貫性を確保することができます。手作業でのエラーやミスを排除し、常に最新の情報を反映させることができます。
  3. パーソナライズとターゲティングの向上: 自動化ツールを使用することで、メールのパーソナライズとターゲティングを簡単に行うことができます。顧客の属性や行動データに基づいて、適切なメッセージを送ることができるため、受け手の関心を引きやすくなります。
  4. スケーラビリティの向上: 自動化によって、大規模なメールキャンペーンを効率的に実施することができます。手動で行う場合に比べて、数千人や数万人の顧客に向けたメールを簡単に送信することができます。

自動でメールリストを作成し、自動送信する手順

  1. 各業界のメールアドレスが記載されているまとめサイトを探す
  2. Google Apps ScriptでWebスクレイピングを行い、名前、メールアドレスを取得
  3. Google Apps Scriptで、Google Spread Sheetに自動で記載する
  4. 取得した情報をもとに、Google の連絡先用に新しいGoogle Spread Sheetにリストを作る
  5. Google の連絡先にインポートする
  6. ラベルを付けた連絡先に向けて、一斉送信する

各業界のメールアドレスが記載されているまとめサイトを探す

検索エンジンを利用して、業界ごとのメールアドレスまとめサイトを探しましょう。

今回は操作の説明の観点から、https://jsonplaceholder.typicode.com/ のjsonデータを使って、説明しようかと思います。

またWebスクレイピングは、Webサイトによっては、robots.txtや利用規約で制限をかけていることがあるため、あらかじめWebスクレイピングをしていいのか、確認してから行いましょう。

注意
  • ルートディレクトリ直下のrobots.txtがある場合はそれを見て、Webスクレイピングが可能かを確認しましょう
  • 利用規約を見て、禁止事項ではないか、確認しましょう

Google Apps ScriptでWebスクレイピングを行い、名前、メールアドレスを取得

実際にGoogle Apps Scriptを使用して、Webスクレイピングを行います。

Google Spread Sheetを立ち上げて、Google Apps Scriptを立ち上げます。

取得する方法としては、以下の通りです。

function get_comments() {
  let url = 'https://jsonplaceholder.typicode.com/comments';
  let response = UrlFetchApp.fetch(url);
  let json_comments = response.getContentText('UTF-8');
  let comments = JSON.parse(json_comments);
  return comments;
}

urlは今回ダミーデータを使用するため、jsonplaceholderを使用しました。commentsの中に指名、メールアドレスがあったため、このデータを使用しました。

Google Apps ScriptはUrlFetchAppを使うことで、簡単にWebスクレイピングを行うことができるので、それを使っていきましょう。

json_commentsの状態では、型がstringなので、JSON.parseして、object型に変換して、簡単に操作できるようにします。最後にreturn commentsをして、次の関数で使用できるようにします。

Google Apps Scriptで、Google Spread Sheetに自動で記載する

次に、取得したデータを使い、Google Spread Sheetに自動で記載していきます。

コードは下記の通りです。

function set_csv_data() {
  let comments = get_comments();
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = ss.getSheetByName('data');
  // comments.forEach((comment,index)=>{
  //   sheet.getRange(index + 2 , 1).setValue(comment.postId);
  //   sheet.getRange(index + 2 , 2).setValue(comment.id);
  //   sheet.getRange(index + 2 , 3).setValue(comment.name);
  //   sheet.getRange(index + 2 , 4).setValue(comment.email);
  // })
  for (let i = 0; i < 100; i++) {
      sheet.getRange(i + 2 , 1).setValue(comments[i].postId);
      sheet.getRange(i + 2 , 2).setValue(comments[i].id);
      sheet.getRange(i + 2 , 3).setValue(comments[i].name);
      sheet.getRange(i + 2 , 4).setValue(comments[i].email);
  }
}

この関数では、まずcommentsにget_comments()の関数でreturn したcommentsを格納しています。

次にssで現在Google Apps Scriptに紐づいているGoogle Spread Sheetを呼び出し、sheetでどのタブのSpread Sheetを使うか指定しています。

そこでfor文を回して、commentsで取得したデータをスプレッドシートに自動で記載しています。

A列が投稿ID,B列がID,C列が氏名,D列がメールドレスになっています。

本来であれば、コメントアウトしているforEach文を回すことで、全件取得できるのですが、commentsの長さが500であったため、テストということで100件のみ取得する関数にしました。

結果このような形でダミーデータをSpread Sheetに自動で記載することに成功しました。

取得した情報をもとに、Google の連絡先用に新しいGoogle Spread Sheetにリストを作る

では次に取得した情報で、Googleの連絡先のフォーマットに合わせて、データを入力していきます。

Googleの連絡先は、csvデータをインポートすることで、自動的に、連絡先や所属先、ラベル管理などができ、簡単にデータを管理しやすいです。

実際にやってみましょう。

まずはどのようなcsvデータが必要なのか確認するために、実際のデータをエクスポートしてみます。

エクスポートする方法は以下の通りです。

Googleのアプリから連絡先をクリックする https://contacts.google.com/
連絡先から誰かひとりをクリックし、編集の隣の縦3つの点をクリックして、エクスポートを選択し、Google CSV形式でエクスポートします
現在のフォーマットが出力されるので、その形式に合わせて、データを入れ込む

以上です。

今回はnameとemailへの自動入力をすることで、Google の連絡先にインポートできる形になるので、やっていきましょう。

まずはWebスクレイピングで取得したデータを配列型にした方が操作しやすかったので、配列に変換する関数を作ります。

function to_array_csv_data() {
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  let sheet_data = ss.getSheetByName('data');
  let lastRow_data = sheet_data.getLastRow();
  let emails = [];
  let names = [];
  for (let i = 0; i < lastRow_data - 1; i++) {
    emails.push(sheet_data.getRange(i + 2, 4).getValue());
    names.push(sheet_data.getRange(i + 2, 3).getValue());
  }
  return [emails, names];
}

Google Spread Shhetのdataタブのnameとemailを配列に入れて、returnで次の関数で呼び出せるようにします。

function set_info_csv_for_goole() {
  let [emails, names] = to_array_csv_data();
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  let sheet_google = ss.getSheetByName('google_csv');
  for (let i = 0; i < emails.length; i++) {
    sheet_google.getRange(2 + i, 1).setValue(names[i]);
    sheet_google.getRange(2 + i, 31).setValue(emails[i]);
  }
}

set_info_csv_for_googleという関数を作り、googleの連絡先のフォーマットに合わせた、csvデータを出力することができます。

ではこのデータをエクスポートして、Google連絡先にインポートしてみたいと思います。

Google Spread Sheetでファイル > ダウンロード > カンマ区切り形式(.csv)でダウンロードし、それをGoogle連絡先にインポートします。

Google 連絡先ページに移動し、連絡先を追加をクリックすると、CSV ファイルや vCard ファイルから連絡先をインポートすることもできます。との文字が出てくるので、クリックするとファイルを選択できるようになるので、先程ダウンロードしたデータをインポートします。

※上記データはすべてダミーデータです。

追記 Google Apps Script上で全件にメールを送信する方法

Google連絡先に追加するのではなく、Google Apps Script上ですべて完結させたい方は、以下のコードで操作してください。

subjectはメールのタイトル

bodyは本文

toはメールアドレス

になります。

デバック用にindexを入れましたが、消しても構いません。

function send_email() {
  let subject = "テストメールです";
  let body = "テスト\nテストの本文です";
  let [emails, names] = to_array_csv_data();
  emails.forEach((email, index) => {
    let to = email;
    GmailApp.sendEmail(to, subject, body);
    console.log(index);
  })
}

まとめ

自動でメールリストを作成し、自動送信する方法をGoogle Apps Scriptで作成しました。

こういったご相談ありましたら、お問い合わせフォームよりお待ちしております。

ご相談はこちらから

この記事を書いた人