見出し画像

スプレッドシートの内容を本文に差し込んで、添付ファイルも付けて、Gmail一斉送信してみた。【改訂版】

小学校の卒業文集を今読んでみると、「なんて恥ずかしいこと書いているんだ」「こんな幼い時もあったんだな」「今ならもっと賢そうな書き方するのにな」なんて感じることありますよね。

自分自身のnoteを読み返してみても、同じように感じることがあります。
GASを始めたころは、何がいいプログラミングで、何が良くないのか、そんなこと全く分かりませんでした。とにかく色々検索して、コピペして、プログラムが正常に動いたらそれで良かった。。
でも今は、「もっと簡潔に書けないかな」「もっと早く処理が終わるように書けないかな」なんて考えるまでになりました。

というわけで、このnoteで1番最初にGASについて書いた「スプレッドシートからGmailを送ってみた」という記事を「今ならこうやって書くのにな」という観点で、書き直してみました。

以前の記事↓

スプレッドシートで送信リストを作ろう。

これは以前の記事と同様です。1列目に名前、2列目に所属、3列目にメールアドレスとしています。

スクリプトエディタ(Apps Script)を開きます。

スプレッドシートのメニューから「拡張機能」⇨「Apps Script」をクリックします。(以前記事書いた時からエディタがバージョンアップしています)↓

スクリプトをコピペする。

以前は、スプレッドシートを作って、ドキュメントで本文を作って、Gmailを送るという手順を踏んでいたんですが、面倒なので今ならドキュメントで本文を作るということはしないです。
それを踏まえてこんなスクリプトにしました。

function sendMail(){

const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const subject = "こちらにメールの件名を入力します。";
const tempu = DriveApp.getFilesByName("添付する資料の名前.拡張子").next();

for(let i = 2; i <= lastRow; i++){
const namae = sheet.getRange(i, 1).getValue(); 
const syozoku = sheet.getRange(i, 2).getValue();
const address = sheet.getRange(i, 3).getValue();
   
const body = syozoku + "\n" + namae + "様\n" +
`
ここに本文を入力します。
バッククオテーションマークで囲むと改行のマークをいちいち付けなくても
改行できます。
`;
     
console.log(address);
console.log(body);
     
// GmailApp.sendEmail(address, subject, body, {
//  attachments: [tempu]});
 }
}

以前のものよりもシンプルにしました。
本文をバッククオテーションマークで囲んで、いちいち改行マーク(\n)を入れなくても良い仕様にしました。

添付ファイルの指定

メールに添付したいファイルはGoogleドライブ内に保存しておいてください。

そして、ファイル名を6行目にコピペしてください。必ず拡張子も含めてコピペしてください。

こんな感じ↓

const tempu = DriveApp.getFilesByName("添付資料1.png").next();

メールの件名と本文を書き換える

4行目のにメールの件名を入力します。
メールの本文の1行目にはスプレッドシートに記入されている「所属」が、2行目には「名前+様」が挿入されます。
それ以降の本文の内容をバッククオテーションマークで囲っているところに記入します。

試しにアドレスと本文を書き出します

この状態で、一度保存して実行ボタンを押してみましょう。

承認

初めてプログラムを実行する際は、承認の作業が必要になります。
承認についての詳細は次の記事をご覧ください。↓

承認後、プログラムが実行され、実行ログにメールアドレスと本文が出力されます。メールアドレス、所属、名前、本文が正しく書き出されているか確認をしましょう。

実際に送信する

実際にGmailを送信するには、スクリプトを少し書き換える必要があります。
console.logを//でコメントアウトし、逆にコメントアウトされているGmailAppの//を削除します。

こんな感じです。↓

//console.log(address);
//console.log(body);
     
GmailApp.sendEmail(address, subject, body, {
 attachments: [tempu]});
 }
}

この状態で実行ボタンを押すと、実際にメールが送られます。

お疲れ様でした。

留意点

今回紹介したプログラムについて、まずはご自身で動作確認をお願いします。あくまでも自己責任でご利用ください。

GASを勉強すれば、あらゆる作業が自動化できますので、ぜひ覚えてみてくださいね。

https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1138543.195&subid=0&type=4https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1138543.195&subid=0&type=4https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1220177.196&subid=0&type=4https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1220177.196&subid=0&type=4

https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1220177.196&subid=0&type=4https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1220177.196&subid=0&type=4https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1220177.196&subid=0&type=4https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1220177.196&subid=0&type=4https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1220177.196&subid=0&type=4https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1220177.196&subid=0&type=4

https://click.linksynergy.com/fs-bin/click?id=NU4ebqMELDM&offerid=1220177.196&subid=0&type=4

では。「スキ」「フォロー」&「シェア」お願いします。
Good bye.

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