見出し画像

【GoogleAppsScript】業務日報を毎日自動で作成する

こちらの記事は以下の動画の解説記事になります。

@kata_techtok

エリートになりたい人はコメント欄の詳細から実践してみてね🍺#プログラミング #GoopleAppsScript #自動化 #エリート

♬ グッバイ宣言 - Chinozo

◆目標

GoogleAppsScriptを使って日報の下書きを自動作成し、勤務終わりに送信するだけで業務報告ができる状態にする

◆準備① 日報テンプレート作成

日報の報告文章をスプレッドシートに用意します。
こちらは使い回す文章なので、より多くのバリエーションを書く必要があります。

というのも後ほど出てくるソースコードの中で、この文章からランダムに文章を取得する処理があるからです。
例えば1日3件訪問先があったとして、全て同じ訪問内容報告とかだったらおかしいですよね。

↓は文章例ですが、これよりも沢山(100パターンとか)用意しておいた方が良いと思います。

記事で扱うスプレッドシートに編集権限リクエストがよく来るのですが、こちらは記事で取り扱う為のサンプルになるので閲覧権限のみに絞っています。
自身でも実際に手元でプログラムを動かしてみたいという方は

『ファイル → コピーを作成』

で自身のドライブにコピーして、そちらを編集等してお使い下さい。

◆準備② 予定の入力

今回はGoogleカレンダーの予定を元に日報を作成するので、画像のように予定を入力します。
入力内容はタイトルと訪問時間だけで大丈夫です。

スクリーンショット 2021-11-01 22.05.25

◆自動化ロジックの実装

スプレッドシートが用意できたら、『ツール > スクリプトエディタ』でスクリプトエディタを開き、以下のコードを記載します。

スクリーンショット 2021-11-01 21.47.09

const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1")
const lastRow = sheet.getLastRow()
const TO_EMAIL = PropertiesService.getScriptProperties().getProperty("TO_EMAIL")
const FROM_EMAIL = PropertiesService.getScriptProperties().getProperty("FROM_EMAIL")
const dateFormat = (date, format) => Utilities.formatDate(date, "JST", format)

const createDailyReportDraft = () => {
 const today = new Date()
 const subject = `${dateFormat(today, "MM/dd")}分 日報報告` // メールのタイトル
 const schedules = CalendarApp.getCalendarById(FROM_EMAIL).getEventsForDay(today) // Googleカレンダーの予定を取得

 let reports = ''
 for (let i = 0; i < schedules.length; i++) { // 予定をループして予定ごとの日報の文章を作成
   const title = schedules[i].getTitle() // 予定のタイトル
   const start = dateFormat(schedules[i].getStartTime(), "HH:mm") // 予定の開始時刻
   const end = dateFormat(schedules[i].getEndTime(), "HH:mm") // 予定の終了時刻
   const random = Math.floor(Math.random() * (lastRow)) // ランダムな数字
   const draft = sheet.getRange("A:A").getValues().filter(String) // 日報の文章を配列で取得
   reports += `${start} - ${end} ${title}\n${draft[random]}${i === schedules.length - 1 ? "\n" : "\n\n"}`
 }

 const body = `お疲れ様です。本日の日報をお送りします。\nご確認のほどお願いいたします。\n
◆本日の訪問記録
${reports}
以上になります。
明日も気合い入れて得意先攻略をしていきたいと思います。`

 GmailApp.createDraft(TO_EMAIL, subject, body) // Gmailの下書きを作成
}

const setScriptProperty = () => {
 PropertiesService.getScriptProperties().setProperties({
   "TO_EMAIL": "送りたい相手のアドレス",
   "FROM_EMAIL": "送信元のアドレス"
 })
}

↓の部分は『送りたい相手のアドレス』『送信元のアドレス(Gmail)』をそれぞれご自身が使いたいメールアドレスに変えておきましょう。

   "TO_EMAIL": "送りたい相手のアドレス",
   "FROM_EMAIL": "送信元のアドレス"

次に、この情報をGASに認識させる必要があるので、↓のように関数を実行しましょう。

スクリーンショット 2021-11-01 21.54.31

◆トリガーの設定

最後に自動で毎日プログラムが動くように設定します。
大体仕事終わりくらいの時間くらいにプログラムを起動させたら、家帰って一息ついた頃には日報の文章ができていて、送信だけ手動ですれば良いですね!

例えば明らかに訪問先に対しておかしい報告内容になっていたり・・と、送信前に上司に無駄に怒られないように見直しくらいはした方が良いので、今回は送信はあえて自動化しないことにしています。

『スクリプトエディタ > 時計みたいなマーク > トリガーを追加』から以下のような設定に変更します。

スクリーンショット 2021-11-01 21.56.11

スクリーンショット 2021-11-01 21.59.59

これで毎日自動で日報が作成されるようになりました!

◆おわりに

他にも『サクッと使えそうな』自動化情報などをエンタメっぽく
TikTokで配信してます!!

面白い、使えそうな動画だと思ったら
『シェア』『コメント』『イイね』
していただけると更新の励みになります🍺

TikTokアカウント ➔ https://vt.tiktok.com/ZSJnM2NCX/

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