1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【たった4行】毎日自動でリッチテキスト形式の日報下書きを作成【GAS】

Last updated at Posted at 2021-10-07

概要

GASで仕事を自動化するスクリプトの定番に、日報作成がある。

スプレッドシートやドキュメントの文章を元にメール下書きを作成するスクリプトを、トリガーで毎日実行と言うのがセオリー?

ただ、普通に文章を文字列にしてメール下書きを作るとプレーンテキストモードになってしまう。プレーンテキストモードだと本文中に表などを張り付けることができず、張り付ける前にプレーンテキストモードのチェックを外す必要がある。

大した操作ではないけど、どうせならそこまで自動化しようじゃないかと工夫。

準備

後々メールの内容を編集しやすくするために、宛先や件名、本文などはスプレッドシートに記載。
image.png
こんな感じ。

件名には日付を入れたいので、数式で記述。
=TEXT(TODAY(),"yyyy年mm月dd日の日報")

プレーンテキストモードの場合

プレーンテキストモードかどうかは三点リーダーでメニューを開くとわかる。
image.png
セルの文字をそのままメール下書きにおこすと、プレーンテキストモードで作成され、表を張り付けてもただの文字列になってしまう。

例えばこれを張り付けると・・・
image.png
こんな感じ。
image.png
と言うわけで次のように工夫してみる。

コード

どうやら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はオプションで指定。本文は使わないけど無いとエラーになるので空白文字を入れている。

実行結果

上記のコードで作成した下書き。プレーンテキストモードにチェックが入っていない。
image.png
表を張り付けてみると・・・
image.png
出来たヽ(・∀・。)ノ☆

運用

このコードをトリガーで出勤前の時間帯に実行させてやれば、リッチテキスト形式の日報下書きが毎日自動で作成される。

トリガーの設定については詳しく説明しているサイトが多いので割愛!

おしまい

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?