この記事では、GAS(Google Apps script)で会社などに送る決まった文章をスプレッドシートに入力して、ボタンを押すと押した人のGmailの下書きに追加する方法を掲載しています。
お世話になっているサイトは、いつも隣にITのお仕事さんの
GASでGmailを操作して日々の日報メールの下書きを自動で作成する
です。
得意先の方にいつも同じような文章を送る時、上司に同じような報告を送るといった場合に使えるテクニックです。
この例では、得意先の「株式会社あいうえお」の営業部長のヤマダさんに送る例で作成して行きます。
このようにスプレッドシートを配置します。
シート名はこのようにしました。
このスプレッドシートを二次元配列として取得して、createDraftメソッドを使って「Gmailの下書き」に保存します。
なぜ二次元配列なのかと申しますと、スプレッドシートはExcel、将棋やオセロのような縦横の座標になっているからです。
二次元、すなわち平面の座標を格納する配列です。
メソッドというのは、動作のことです。この例ではGmailの下書きの所に送るという動作です。
「メソッド」というとちょっと分かりづらいという方は、メソッドを数学の公式みたいなものだと捉えて頂いても大体掴めて来ると思います。
例えば3角形の公式に必要なのは「底辺」と「高さ」の値です。この底辺と高さの値が引数に当たり、底辺×高さ÷2で三角形の面積を求めて計算する動作がメソッドに当たります。
createDraftメソッドはこのスプレッドシートのボタンを押した人のGmailの下書きの所に移動させるメソッドです。
引数(メソッドを利用する際に必要となるもの)は「アドレス、タイトル、本文」です。
アドレスをto、タイトルをsubjectという定数、本文をbodyという変数に格納して、このcreateDraftメソッドを使います。
アドレスとタイトルは変わらないので定数、本文はこのプログラムでは何も無い所に「誰々さん」、「お世話になっています・・・」などと追加していくので変数です。
今回の例では、本文が最初何も無い所に「宛名の人名」+「その後の挨拶や文章」が加えられて行きます。
定数も変数もAmazonなどの段ボール箱に例えられ、箱の中に値を入れるイメージですが、定数は箱の中身を接着剤で固定して動かないようにするもの、変数は「魔法の壺」を入れたり、今日私が購入した「光目覚まし時計」を入れたりと、色々と中身を変えること(追加や変更、削除が出来る)でイメージが掴めて来るかと思います。
さて、今回使う下書きに送るcreateDraftメソッドの書式は、
createDraft(アドレス,タイトル,本文);
になります。
では、コードを詳細に見て行きます。
const values=SpreadsheetApp.getActiveSheet().getDataRange().getValues();
長ったらしいですが、最初のSpreadsheetAppがスプレッドシートの1番トップの所、次のgetActiveSheet()が現在のシート、何で()となっているのかは、三角形の面積と違って、特に使うのに必要なものが無いからです。
その次のgetDataRange()は、このスプレッドシートのデータを二次元配列として取得するメソッドです。なので、スプレッドシートに書かれている値がそのまま二次元配列として取得できます。具体的には、配列valuesの[0][1]が得意先のヤマダ部長のアドレスで、values[3][1]が本文になっています。配列は先頭が0番目で次が1番目・・・と続きます。
最後のgetValues()で値が取得されます。
3番目のgetDataRange()で金魚すくいの網を貼って、最後のgetValues()で実際に釣り上げるイメージです。
const to=values[0][1];
ここでは、二次元配列valuesの座標[0][1]のところのアドレス「yamada@aiueo.co.jp」を、定数toに格納しています。
const subject=values[1][1];
ここでは、二次元配列valuesの座標[1][1]のところの「2月度のご案内」を、定数subjectに格納しています。
let body=””;
ここでは空の状態の本文を変数bodyに格納しています。この後文章を追加していくので、一旦からの物を用意する感じです。
body+=values[2][1]+’\n’;
ここでは配列valuesの[2][1]にある「株式会社あいうえお 営業部長ヤマダ様」をbodyに追加しています。+=については、
A=A+Bを、
A+=Bと書くことが出来ます。
また、’\n’とバックスラッシュnを加えることによって改行させています。
body+=values[3][1]+’\n’;
ここで、bodyに「お世話になっております・・・」を加えます。
これで、メソッドcreateDraftを使う(アドレス、タイトル、本文)が求まったので、下記のコードでGmailの下書きに入れられます。
GmailApp.createDraft(to,subject,body);
非常にシンプルなコードですが、これで以上です。
ここまでのコードをまとめます。
function createDraft() {
//スプレッドシートのトップから現在のアクティブシートに階層を辿ってアクセスして、データを二次元配列として取得する
const values=SpreadsheetApp.getActiveSheet().getDataRange().getValues();
//相手先のアドレスを定数toに格納
const to=values[0][1];
//題名を定数subjectに格納
const subject=values[1][1];
//本文を定数bodyに格納し、改行して追加
let body="";
body+=values[2][1]+'\n';
body+=values[3][1]+'\n';
//Gmailの下書きへGo!!
GmailApp.createDraft(to,subject,body);
}
ボタンを押すと、押した人のGmail の下書きにこの様に保存されます。
このシートをコピーして社内用に使い回して株式会社あいうえおのヤマダ部長との会議を上司のサトウ課長に報告することも可能です。
シートをコピーして、名前を変えます。
スプレッドシートの画面です。ボタンを押して作れた下書きです。
お疲れ様でした。ブレイクタイムフォトは、今2月なのに季節外れですが、六本木ヒルズで撮影したハロウィンの写真です。
・関連記事
六本木ヒルズ、ハロウィンでトリックオアトリート!?
■参考文献の紹介■
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。
GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本を通してじっくり学べます。
GASサンプル集に戻る
メインメニューに戻る
これからプログラミングを始める方へ
基本情報技術者へ
自己紹介
プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。