Google Apps Script プログラミング

Google Apps Script(GAS)でスプレッドシートを操作するLINE BOTを作ってみた

投稿日:

2次請け、3次請けのSIerあるあるとして「自社の勤務表」と「現場の勤務表」同じような勤務表エクセルを二つ作成し、提出しなければならない、という非常にめんどくさい作業があると思います。

私の場合はGoogleのスプレッドシートで管理しているのですが、現場のセキュリティレベルが高いところだと、現場からは外部ストレージにアクセスするようなサービスは一切使えないところもあります。

そのため、帰宅後に勤務表に出退勤を入力することになるのですがわざわざこれだけの為にPCを開くのも面倒ですよね。かといってあとでやろうと思うと詳しい出退勤時刻を覚えていなかったり。スマホのスプレッドシートアプリもあるのですが、スマホ画面からだと小さすぎて作業出来たもんじゃありません。

なんとか通勤時間でパッと更新出来るようなものを作れないかと考えあぐねていたところスプレッドシートを操作できるプログラムであるGoogle Apps Script(GAS)(ExcelでいうVBA)からLINEと連携させることが出来るとのこと。これをほぼ思い通りのものを実現できたので、その中身を紹介したいと思います。

環境

OS:Windows10
使用言語:Google Apps Script
操作対象のツール:スプレッドシート
外部インターフェイス:LINE

アプリ制作の流れ

以下は大したドキュメントがあるわけではありませんが簡単に要件と設計、開発の流れを説明します。

要求

  • 帰宅後PCを開くのが面倒なので通勤の電車内で、勤務表の入力とファイルを添付したメールを送信出来るようにしたい
  • スマホアプリのスプレッドシートだとスマホ画面上からは小さくて非常に扱いづらいのでスプレッドシートのアプリは使いたくない

要件

スプレッドシートのアプリを使わずに、勤務表スプレッドシートの日々の出退勤時刻、休みの入力、現場勤務表から自社勤務表へデータの取り込み、勤務表を添付したメールの送信をスマホからの操作だけで完結させる。

GASを使えばサーバーレスでアプリを動かし、スプレッドシートの操作が可能。LINE BOTと連携させることでスプレッドシートのスマホアプリを使わずにスマホ上からスプレッドシートを操作することが可能。

設計

  1. LINE developersで BOTのアカウントを作成しIDを取得する
  2. スプレッドシート現場勤務表と自社勤務表を作成し、それぞれのIDを取得
  3. IDの情報をもとにGASでLINE BOTと連携させる
  4. 機能ごとにコマンドを割り当てる

機能

  • 出退勤時刻の登録
  • 休みの登録
  • 遅刻や早退など、その他事由の登録
  • 月の更新
  • 交通費精算シートの更新
  • 現場勤務表から自社勤務表へデータの取り込み
  • メール作成

LINE BOTの作成方法とIDの取得方法、アプリの起動方法は以下のサイトが詳しいのでこちらを御覧ください。
参考サイト:
【LINE Botの作り方】Messaging API × GAS(Google Apps Script)でおうむ返しボットを作成する

機能詳細

では機能ごとのコードを解説していきます。

LINE BOTとの連携部分

ここはLINE BOTとの連携部分になります。受け取ったメッセージに対して処理を行い、返信をします。

channel_access_token に取得したLINE BOTのアクセストークンを設定し、replyMessage に返信メッセージを入れて返信を行います。その他の部分は固定で大丈夫です。

受け取ったコマンドによって処理を切り分ける

基本的には受け取ったコマンドと、スプレッドシートの情報をそれぞれの関数に引数として渡して処理を行い、戻り値にメッセージを設定してBOT連携部分に返します。以下使い方になります。

※入力時の注意点
コマンドはすべて単語ごとに半角スペースで区切る
先頭にスペースが入ってしまってもNG

①出退勤時刻の更新
「出勤 9:00」で今日の出勤時刻を更新
「出勤 9:00 12」だと、12日の出勤時刻を更新
退勤時刻も同様

②休みの更新
「12 年休」で12日を年休として更新

③事由の更新
「事由 午前休 12」で12日の事由を午前休で更新
【事由一覧】[ 年休、午前休、午後休、早退、遅刻、欠勤、休業日、祝日 ]

④月の更新
「月更新 4」でシートを4月に更新

⑤Suica購入日更新
「Suica 4/8」でSuica定期券購入日を4/8に更新

⑥現場勤務表データを自社勤務表へ取り込み
「取り込み」で取り込みを行う

⑦メール作成、下書き保存
「メール 現場」で現場勤務表を添付したメールを作成し下書きに保存する
「メール 自社」で自社勤務表を添付したメールを作成し下書き保存する

出退勤時刻の登録

現場勤務表から自社勤務表へデータを取り込む

メール作成、Gmailの下書きに保存

ほとんどの会社ではExcelで管理しているところがほとんどだと思いますので、スプレッドシートをExcel形式にして添付しています。下記はその際の固定のコードになりますのでこのまま使います。

全体

まとめ

LINE BOTの作成も意外と簡単に出来ました。GASではスプレッドシート、Gmail、ドライブなどGoogle関連サービスの操作が容易に出来るようになっているようなので今後もいろいろと試して見たいと思います。

スポンサーリンク


スポンサーリンク


-Google Apps Script, プログラミング

Copyright© 諸行無常 , 2021 All Rights Reserved Powered by AFFINGER4.