【GAS】日報業務を効率化してみた

こんにちは、技術部の M です。
今回は GAS を使って、日報業務を効率化するアプリを作成してみました。
具体的には、Google フォームに本文の内容を入力して送信すると、自動的にメールとして送信するというような流れになってます。

スプレッドシートを作成する

ひとまず、メールに使用するデータを入力したスプレッドシートを作成します。以下が今回使用したものです。

SpreadSheet

送信先、件名、本文の3項目を用意しました。本文のセルを、フォーマットと日によって変わるものとで分けておくのがポイントです。
ちなみにセル B2 の件名ですが、

				
					="【日報】"&TEXT(TODAY(),"mmdd")

				
			

と設定してあります。TODAY()関数を使うことで、送信日の日付になるようにしています。

フォームを作成する

スプレッドシートのメニューバーにある「ツール」から「新しいフォームを作成」をクリックすると、現在のスプレッドシートに紐づいたフォームを作成することができます。

form

フォームは上記のように作成しました。1 と 2 は必須項目で、3 は入力しなくても OK という設定にしてます。
次に、上部の「回答」から「スプレッドシートで表示」という項目をクリックします。
このシートにはフォームに回答があった場合、回答内容が自動で入力されます。便利ですね~。

次に、フォームの回答が先ほど作ったメールのフォーマットのシートに入力されるようにします。

form

まずは回答シートに適当にセルを用意して、そのセルが最新の回答を参照するように関数を記述します。
(今回の場合は、)
H6 に

				
					=index(B1:B,max(ArrayFormula((--(B1:B<>"")*row(B1:B)))))

				
			

I6 に

				
					=index(C1:C,max(ArrayFormula((--(C1:C<>"")*row(C1:C)))))
				
			

J6 に

				
					=index(D1:D,max(ArrayFormula((--(C1:C<>"")*row(C1:C)))))

				
			

J6 の関数についてですが、上 2 つと違い、行番号を取得するときに D 列ではなく C 列を参照しています。これは「3.その他」が必須項目ではないため、D 列を参照すると入力がない場合には前回の内容を取得してしまうので必須項目である C 列を参照しています。
最後にメールのフォーマットのシートに移動して、フォームの回答シートのセルを参照するように記述します。
書き方は以下の通りです。

				
					='シート名'!セル番号
				
			

GAS を使って処理を作成する

シートとフォームの作成が終わったら、シートからメールの下書きを作成し送信するプログラムを組みます。

AppsScript

シートの上部にある「拡張機能」から「Apps Script」を開きます。(見つからない場合は「ツール」にあるかもしれません。)
開くとエディタが開かれた状態で myFunction() という関数が入っていますが、無視して以下のコードを上から貼っちゃってください。

				
					function sendEmail() {
  // スプレッドシートを開く
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // 情報をスプレッドシートから取得する
  var sheet = spreadsheet.getSheetByName('下書き'); // シート名を指定する
  var recipientEmail = sheet.getRange('B1').getValue(); // 送信するメアドが入っているセルを指定する
  var subject = sheet.getRange('B2').getValue(); // 件名が入っているメアドを指定する

  // 本文を取得する
  var messageRange = sheet.getRange('B3:B10'); // 本文が格納されているセル範囲を指定する
  var messageValues = messageRange.getValues();
  var message = messageValues.map(function(row) {
    return row[0];
  }).join('\n'); // セルの値を改行で連結してメッセージ本文とする

  // メールを送信する
  GmailApp.sendEmail(recipientEmail, subject, message); //(送信先,件名,本文)
}
				
			

基本的にはコメントアウトの指示に従って引数を設定してもらえば大丈夫だと思います。記述が終わったら保存してください。

トリガーを設定する

Apps Script の画面左に時計のアイコンがあるのでそこからトリガーを設定します。
右下にある「トリガーを追加」をクリックし、以下のように設定してください。

trigger

以上で準備が完了しました。最後にテストをしてみます。

テスト

フォームの入力

test form

フォーム送信後、メール確認

test mail

無事メールが送信されました。

初めて GAS を使用しましたが、Google 周りのアプリと連携がスムーズで簡単に開発が出来ました。Google のアプリケーションを使って行う業務は何かと多いので他にも効率化をしてみたいです。
最後までご覧いただき、ありがとうございました。

スーパーソフトウエアの採用情報

あなたが活躍できるフィールドと充実した育成環境があります

blank
blank