メッセージの一斉送信 Google スプレッドシートの使い方

アンソロジー運営のためにメッセージ一斉送信 Google スプレッドシートを作りました。使い方をここに残しますので、もしよろしければご活用ください。

Google スプレッドシートをコピーする

スプレッドシートの持ち主が「送信元」になります。コピーされたスプレッドシートはコピーをしたアカウントの持ち主になります。コピーは「送信元」となるアカウントで行ってください。

画像1

画像2

必要に応じて「名前」「フォルダ」を変更します。

宛先を指定する

「宛先」タブでパラメータを入力します。
「address」は必須項目です。
それ以外の列1行目にはパラメータ名を指定してください。

画像3

「件名」「本文」を指定する

「テンプレート」タブで「件名」「本文」を指定します。
「宛先」タブで指定したパラメータが {{パラメータ名}} で展開されます。

画像5

送信する

「テンプレート」タブの「送信」ボタンを押します。
確認画面が現われるので問題なければ「OK」ボタンを、修正する場合は「キャンセル」ボタンをおしてください。

画像11


他人に送信する前に自身に向けて送信して内容を確認することをお勧めします。

注意事項

初回実行では承認を求められ送信できません。これは Google スクリプトの仕様です。「Google が作ったアプリケーションではないので何があっても Google は責任は取りません」ということを言っています。自分自身で作ったアプリケーション(Google スクリプト、GAS)であっても聞かれるのでそういうものだと思ってください。ソースコードは Google スプレッドシートの「ツール」→ 「スクリプトエディタ」で確認できます。ソースコードを読めば解ると思いますが数十行で大した事はしておりません。スプレッドシートから宛先や件名を本文を取得して加工してGmailで送っているだけです。

下記の画像を参考に承認をしてください。承認後に再度「テンプレート」タブの「送信」ボタンを押すと送信されます。

画像4

画像9

画像6

画像7

画像8

参考までにソースコードを記載しておきます。貴方のお役に立てれば幸いです。

function getTemplate () {
 const sheet = SpreadsheetApp.getActiveSpreadsheet();
 const template = sheet.getSheetByName('テンプレート')
 const subject = template.getRange(1, 1).getValue();
 const content = template.getRange(2, 1).getValue();
 return [subject, content];
}

function sendEmail() {
 const [_subject, _content] = getTemplate();

 const sheet = SpreadsheetApp.getActiveSpreadsheet();
 const addresses = sheet.getSheetByName('宛先');
 const range = addresses.getDataRange();
 const columns = addresses.getLastColumn();
 const rows = addresses.getLastRow();

 for (var i = 2; i <= rows; i++) {
   let to = null;
   let content = _content;
   let subject = _subject;
   for (var j = 1; j <= columns; j++) {
     const header = addresses.getRange(1, j).getValue();
     const value = addresses.getRange(i, j).getValue();
     if (header === 'address') {
       to = value;
     }
     const reg = new RegExp(`{{${header}}}`, 'ig')
     subject = subject.replace(reg, value);
     content = content.replace(reg, value);
   }
   GmailApp.sendEmail(to, subject, content);
 }
}

function alert () {
 const ui = SpreadsheetApp.getUi();
 const title = 'メールを送信しますか?';
 const prompt = '[宛先]タブで指定したアドレスにメールを一斉送信します。\n[はい]を押す前に宛先やメッセージ内容に不備がないかご確認ください。'
 const result = ui.alert(title, prompt, ui.ButtonSet.OK_CANCEL);
 return result === ui.Button.OK;
}

function execute () {
 if (alert()) {
   sendEmail();
 }
}


この記事が気に入ったらサポートをしてみませんか?