概要
GASで仕事を自動化するスクリプトの定番に、日報作成がある。
スプレッドシートやドキュメントの文章を元にメール下書きを作成するスクリプトを、トリガーで毎日実行と言うのがセオリー?
ただ、普通に文章を文字列にしてメール下書きを作るとプレーンテキストモードになってしまう。プレーンテキストモードだと本文中に表などを張り付けることができず、張り付ける前にプレーンテキストモードのチェックを外す必要がある。
大した操作ではないけど、どうせならそこまで自動化しようじゃないかと工夫。
準備
後々メールの内容を編集しやすくするために、宛先や件名、本文などはスプレッドシートに記載。
こんな感じ。
件名には日付を入れたいので、数式で記述。
=TEXT(TODAY(),"yyyy年mm月dd日の日報")
プレーンテキストモードの場合
プレーンテキストモードかどうかは三点リーダーでメニューを開くとわかる。
セルの文字をそのままメール下書きにおこすと、プレーンテキストモードで作成され、表を張り付けてもただの文字列になってしまう。
例えばこれを張り付けると・・・
こんな感じ。
と言うわけで次のように工夫してみる。
コード
どうやらhtml文がメールに入っていると勝手にリッチテキストになるので、シートから抽出する本文をhtml形式で記述する。
function richText() {
let data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
let html = '';
for(let i=3; i<data.length; i++) {html += data[i][1] + '<br/>';}
GmailApp.createDraft(data[0][1], data[2][1], '', {htmlBody: html, bcc: data[1][1]});
}
1行目
data
にシートのセルを全て格納。
2行目
後ほど本文として使うhtml
を宣言。
3行目 ポイント^^)b
B列4行目からB列最終行までをhtml
に追記。
セルの内容と改行を繰り返し追記していて、セルが空欄の場合は改行だけが入る。改行を\n
ではなく<br/>
にすることでhtml形式になる。
4行目
メール下書き作成。
GmailApp.createDraft
は、( 宛先, 件名, 本文, { オプション } )
となってるので、それぞれを引き当てる。html形式の文章とBccはオプションで指定。本文は使わないけど無いとエラーになるので空白文字を入れている。
実行結果
上記のコードで作成した下書き。プレーンテキストモードにチェックが入っていない。
表を張り付けてみると・・・
出来たヽ(・∀・。)ノ☆
運用
このコードをトリガーで出勤前の時間帯に実行させてやれば、リッチテキスト形式の日報下書きが毎日自動で作成される。
トリガーの設定については詳しく説明しているサイトが多いので割愛!