RareJob Tech Blog

レアジョブのエンジニア・デザイナーによる技術ブログです

Google Chatのbotからスプレッドシートデータを読み出してみる

こんにちは、はじめまして
ITソリューションチームの平川です。

ITソリューションチームはいわゆる「情報システムチーム」でして、
日々PCについての問い合わせや依頼を受けています。
PCの作業依頼はワークフローで届くので、PC管理番号と利用者が正しいかなどの確認を行なって承認→作業となっていきます。

そこで、PC管理番号と利用者の確認はPC台帳なるものを都度確認するわけですが、この作業がめんどくさいんです。

本当に。

いちいち台帳開かなくても、誰かに聞けば教えてくれるようにならないかなと思いGoogle Chatを使って試してみました。

ではやっていきます。

GCPプロジェクトの作成

まずはGoogle Chat botを扱うプロジェクトを作成していきます。
下記リンクに沿って進めていきます。

Publishing bots  |  Google Chat API  |  Google Developers

[Enable API]ボタンをポチッと押して新しいプロジェクトを作成します。
ここでは「ChatbotTEST」と名前をつけて進めます。 

f:id:Peperonciiiiiiino:20200903182145p:plain

JSONファイルはダウンロードしてもしなくても大丈夫です。

f:id:Peperonciiiiiiino:20200903182337p:plain

これでプロジェクトが作成されました。

ボットスクリプトの作成

続いてボットスクリプトを作成していきます。
これもテンプレートが公開されているので利用していきます。

https://script.google.com/create?template=hangoutsChat

 クリックするとスクリプトが作成されますので、名前を変更してデプロイIDを取得します。
[公開] -> [マニフェストからの配置] -> [Get ID] 

f:id:Peperonciiiiiiino:20200903183618p:plain

f:id:Peperonciiiiiiino:20200903183658p:plain

表示された[Deployment ID]を控えておきます。

APIの構成とデプロイ

作成したプロジェクトからボットAPIの構成とデプロイを行なっていきます。

Google Cloud Platform

[ナビゲーションメニュー] -> [APIとサービス] -> [ダッシュボード] 

f:id:Peperonciiiiiiino:20200903184653p:plain

右ペイン最下部に「Hangouts Chat API」があるのでクリックします。

f:id:Peperonciiiiiiino:20200903184748p:plain

ここからボットAPIの設定を行なっていきます。
左メニュー -> [設定]
▼アプリケーション情報
下記情報を入力します
 [ボット名]
 [アバターのURL]
 [説明]
▼機能
 [ボットはダイレクト メッセージ内で機能します]にチェック
▼接続設定
 [App Script Project]を選択し、先の手順で入手している [Deployment ID]を入力します
▼権限
 必要に応じて設定してください

f:id:Peperonciiiiiiino:20200904112851p:plain

続いてサービスアカウントにプロジェクトのオーナ権限を付与していきます。
[ナビゲーションメニュー] -> [IAMと管理] -> [サービスアカウント]

f:id:Peperonciiiiiiino:20200903190302p:plain

表示されたサービスアカウントをコピーします。

f:id:Peperonciiiiiiino:20200903190647p:plain

[ナビゲーションメニュー] -> [IAMと管理] -> [IAM] ->[追加]
サービスアカウント追加して[オーナー]権限を付与します。

f:id:Peperonciiiiiiino:20200903203205p:plain

f:id:Peperonciiiiiiino:20200903203243p:plain

これで、GoogleChatのボットに登録されます。

動作確認その1

作ったボットの動作を確認します。
GoogleChatを開き、登録したbotを追加します。

https://chat.google.com/

[BOT]の横にある+から登録したbotを追加します

f:id:Peperonciiiiiiino:20200904113533p:plain

f:id:Peperonciiiiiiino:20200904113552p:plain

botに話しかけると入力したテキストを返してくれます。

f:id:Peperonciiiiiiino:20200904113836p:plain

テンプレートのスクリプトが動く事を確認できました。

ここまでうまく動いたので、スクリプトを修正してスプレッドシートからデータを読み出しを行なっていきたいと思います。

スプレッドシートの準備

スプレッドシートでPC台帳っぽいものを準備します。
今回はこんな感じの台帳を使います。

f:id:Peperonciiiiiiino:20200904114052p:plain

それからスプレッドシートのURLからIDを取得します。

スクリプトの修正

今回はPC番号[A列]を入力したら、貸出者[B列]が返ってくるようにスクリプトを修正していきます。

こんな感じに修正します。

f:id:Peperonciiiiiiino:20200904115010p:plain

動作確認その2

では、動作を試していきます。
(最初に文字を入力するとスプレッドシートへのアクセスリクエストが行われますので、スプレッドシートのアクセス権があるアカウントで[許可]を行なってください)

f:id:Peperonciiiiiiino:20200904115853p:plain
存在するPC番号の貸与者が正常に表示されました。

これでわざわざ台帳を見なくてもPC番号から利用者(貸与者)がわかるようになりました!


まとめ

GCPやGAS(Google Apps Script)はほとんど使ったことありませんでしたが、テンプレートやらナレッジがたくさんあったので割と簡単に作ることができました。

今回作ったのは単純なルールベース型のボットですが、もう少し作り込めばいくつかの業務改善が行えそうだなと思いました。

 

では、また。