【GAS】スプレッドシートとGmailへ連携させてメールを自動作成しよう

※こちらの画像は、Muhammad RibkhanによるPixabayからの画像さんより頂いております

報告書を自動化して業務の効率化を図ろう!

コロナ禍では、在宅勤務も増え上司へ報告書の提出をメールで求められていませんか?

しかし、面倒ではないでしょうか?

 上司とのコミュニケーションというわけではなく、ほとんど同じ内容を書いていないでしょうか?報告書に限らず、メールの文章で7割程度同じだったり、メールの形が同じなら、プログラムで簡単にしたほうが良いよね!というお話です。

 さて、報告書の書き方は、会社によって異なると思うので例を用いていきましょう

〇〇様

お疲れ様です。鈴木いちろうです

本日11/22(月)の報告をお送ります

★報告の内容★

以上、何卒よろしくお願いいたします。
鈴木いちろう

おそらく、報告に限らずメールってこんな形ですよね。

時間短縮できるんじゃないかな??

当然、このような発想になっていきます。こんな時、スプレッドシートとGmailを活用してある程度プログラムで自動化できるところはして、業務効率化を図りましょう!!

スプレッドシートでやること

まずは、下記のような内容のスプレッドシートを用意します。メールアドレスについては、CCやBCCを利用しない人は、削除してお使いください。今回は、色々使い方を学ぶために、すべてのパターンを入れたもので例を作成しています。
<注意>メールアドレスは適当です。

スプレットシートに記載する内容

今回作成するスプレットシートにも工夫をしています。

B5セルに記載されている日付は開くために新しい日付にするのがベストですよね。B5セルは、数式を利用しているので下を参考にしてください

="【"&B1&"】"&TEXT(TODAY(),"yyyy/mm/dd(ddd)")&"の報告"

スプレッドシートにある程度定型文を記載すれば、セルの内容同士をくっつけることができるため、内容も楽になります。

ポイント

日付を合成するときは、「yyyy/mm/dd(ddd)」のように表示様式を決めないと、日付表示されず、数字になります。例えば、別セルに日付を記載して、その内容を合成するとわかります。

B6のセルも同様になります

セルの値を変数に代入する方法は下記のページを参考にしてください

Muhammad RibkhanによるPixabayからの画像

GASでGmailを動作させるには

 さきほど書き込んだスプレッドシートの内容を基にプログラムを使ってGmailへ自動に貼り付けるようにしましょう。コートは下記のとおりです。コードの説明は、下でするのですが、Gmailへの命令は、たった1行です。すごいですよね。

function myFunction() {
  const value = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
  const to = value[1][1];
  const Option = {
                    bcc: value[3][1],
                    cc: value[2][1],
                 }
  const subject = value[4][1];
  let body = '';
  body += value[5][1] + '\n';
  body += '\n';//改行
  body += value[6][1] + '\n';
   body += '\n';//改行 
  body += value[7][1];
  
  GmailApp.createDraft(to, subject, body,Option);  //上記の変数の内容をGmailアプリを起動さえ自動で入れる
}

GmailAppの解説

 GASのリファレンスに下記の内容が書かれています。Gmailのクラスに「createDraft」があり、引数を4つ設定すれば、その内容がGmailアプリへ反映されるというもの。それぞれの引数は下記の通りでよいと思います。
 引数は、プログラム上で記載する場合は必ずしも同じなくて良いです。例えば、私のコードでは、「recipient」をメールアプリで記載されている「to」にしています。
 4つの引数をプログラムで変数に引き渡せば自動化できるということになります。

  • recipient:送付したいメールアドレス
  • subject:メールの件名
  • body:メールの内容
  • options:CCやBCC等の設定

GASのリファレンスより

コードの説明

SpreadsheetApp.getActiveSheet().getDataRange().getValues(); について

 GmailApp.createDraftの説明は、先のとおりです。したがって、引数である4つの項目をプログラムに記載すれば終わりになります。

const value = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
については、いつもスプレットシートの情報を読み込むときに使うものですが、「 getDataRange() 」については、下記のように記載されています。

 Returns a Range corresponding to the dimensions in which data is present.

 つまり、データの存在する範囲を返すということです。今回のサンプルでは、セル「A1」から「B8」になります。その値が定数として変数「Value」へ代入されるわけです。
 下記のようなプログラムを実行すると、なるほど~って理解しやすいです。結果からいうと、配列のように一つの変数の中にスプレットシートで有効だった値が代入されています。

function myFunction() {
  const value = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

  console.log(value) ; 
}

const to = value[1][1];について

 このコードは、変数「to」にスプレッドシートの[1][1]の座標のデータを入れていることになります。今回は、「aaa@bbb.com」になります。下図のような関係があるので覚えておくと良いと思います。同じようにCCのデータは[2][1]になります。

 〇注意 メールアドレスを複数挿入するときは、「,」カンマで区切ること

まとめ

 どうだったでしょうか?今回は、下書きを作成するプログラムなので、自動で送信したりしません。ご安心ください。
 このプログラムだけでも仕事効率化に大きく影響を与えたのかなと思います。プログラムを実行するとGmailに下書きが自動で作成されています。スプレッドシートの工夫次第で、皆さんの仕事効率化が進むことは間違いない!!

 最後に、こちらで活用したコードを記載しておきますので参考にしてください
 改行は「¥n」になります。Javaは、バックスラッシュに変換されるみたいで、「¥n」と表示されていないので注意です。

function myFunction() {
  const value = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
  const to = value[1][1];
  const Option = {
                    bcc: value[3][1],
                    cc: value[2][1],
                 }
  const subject = value[4][1];
  let body = '';
  body += value[5][1] + '\n';
  body += '\n';//改行
  body += value[6][1] + '\n';
   body += '\n';//改行 
  body += value[7][1];
  
  GmailApp.createDraft(to, subject, body,Option);  //上記の変数の内容をGmailアプリを起動さえ自動で入れる
}

Follow me!

【GAS】スプレッドシートとGmailへ連携させてメールを自動作成しよう” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です