スタッフブログ

BLOG

2022.08.29

Google Apps Script(GAS)とChatworkで業務の抜け漏れ防止!

クイックリーブログをご覧いただきありがとうございます。
夏季休暇にライヴハウスで眼鏡の弦が折れてしまい、

新しい眼鏡や人生初のコンタクトを購入し、最近イメチェンしたWeb広告プランナーの中瀬です。

皆さんは「月に一度のルーティンをうっかり忘れてた」
なんていう経験はありませんか?

そんな「うっかり」を防止するためにうってつけの
Google Apps Script(GAS)を使ってChatworkで自動でアナウンスを送る方法をご紹介します。

1.Google Apps Script(GAS)とは

Google Apps Script(GAS)とは、Googleが開発・提供しているプログラミング言語です。
JavaScriptというプログラミング言語をベースに作成されています。

私はJavaScriptを学んだことは無いですが、基本的なルールだけ押さえれば、素人でも作りたいプログラムを組むことができます。
検索エンジンで検索すれば、第三者が公開している簡単なコードが見つかるので、それを参考にしながらコードを書いていくことが多いです。

2.Chatworkとは

弊社でも導入している、業務用チャットツールです。
LINEのグループチャットのように、複数人で業務連絡を共有したり、簡単に履歴を遡って見たりすることができるため、
従来のメールでのコミュニケーションより便利です。

3.設定方法

それでは本題のGASを使ってChatworkで自動でアナウンスを送る方法をご紹介します。

①GoogleドライブからGoogle Apps Scriptのスクリプトエディタを起動する

※Google広告を利用しているGoogleアカウントだと、何故か上手く動作しないため、別のアカウントをご利用ください。
まず、Googleドライブの画面を開き、
+新規ボタンをクリック

その他>Google Apps Scriptを選択

以下の画面になったら正解です。

②Chatworkと連携する設定を行う

ライブラリの横の+ボタンをクリック

スクリプトIDの欄に
1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav
を入力し、検索をクリック

バージョンのプルダウンを開き、最新(数字が最も大きい数)かどうか、
IDが「ChatWorkClient」になっているかどうか確認し、問題なければ、追加をクリックする。

③ChatworkのアカウントのAPIトークンを確認する

自動でアナウンスを送信する(チャットの発話者)Chatworkのアカウントでログイン。
※自動でアナウンス送信した際に、発話者には通知が来ないため要注意
右上のユーザー名をクリックし、サービス連携をクリック。

APIトークンをクリックすると、APIの利用申請画面になります。

利用申請をし、Chatworkの組織管理者に承認をもらってください。

承認されると、同じAPIトークンの画面が下記のようになりますので、コピーをクリックし、メモ帳等に貼り付けておきます。

④プログラミング

下準備が整ったところでプログラムを組んでいきます。
コードは下記をコピペしてご利用ください。

function myFunctionSetTrigger(){

const time = new Date();
time.setHours(時間を入力(例:9時→09));//時間を入力
time.setMinutes(分を入力(例:30分→30));//分を入力
ScriptApp.newTrigger(‘myFunction’).timeBased().at(time).create();

}//①下の関数を指定した時間通りに実行させるためのトリガーを作成する関数

function myFunction(){
var client = ChatWorkClient.factory({token:’ChatworkAPIトークンを入力’}); //ChatworkAPIトークン

client.sendMessage({
room_id:ChatworkルームIDを入力, //ChatworkルームID
body: “[toall]\n”+
“送信したい文章を記載\n”+
“送信したい文章を記載\n”+
“送信したい文章を記載”
})//②指定したChatworkのルームに自動で文章を送る関数
function delTrigger() {

const triggers = ScriptApp.getProjectTriggers();
for(const trigger of triggers){
if(trigger.getHandlerFunction() == “myFunction”){
ScriptApp.deleteTrigger(trigger);
}
}

}
}//③①で作成したトリガーが蓄積されてしまうため、自動で削除する関数

関数の仕組みとしては、
①の関数を後で設定するトリガーで動かし、②の関数を時間通りに実行するトリガーを作成します。(デフォルトのトリガーでは午前8時~9時等といった幅のある時間指定しかできないため)
時間になると②の関数が実行され、Chatworkにアナウンスが送信されます。
最後に、③の関数で①の関数で生み出されたトリガーを削除します。(削除しないと、関数を実行するたびにトリガーが増えていってしまうため)
ということになっています。

※「//」以降は改行するまでは関数に影響を与えません。他の人が関数を見たときに分かりやすいようにメモ書きとして利用できます。
※送信したい文章を記載するときは
 \n”+を末尾に付けると改行できます。


上の画像のように貼り付けてからカスタマイズしていきましょう。

まず「時間を入力」「分を入力」の箇所はアナウンスを送りたい時間を入力します。
ChatworkAPIトークンは先ほど、メモ帳に貼り付けておいたものです。
ChatworkルームIDは、ブラウザ版でアナウンスを送信するトークルームに入ると、URLが
https://www.chatwork.com/#!rid+9桁の数字
となっていますが、末尾の9桁の数字がルームIDです。
送信したい文章を記載したら画面上部「実行」ボタンの左隣の「プロジェクトを保存」ボタンをクリックします。

⑤テスト送信

次に実行する関数を選択する欄が「myFunction」になっていることを確認し、

「実行」ボタンをクリックします。

「承認が必要です」というポップアップが出るので、
「権限を確認」をクリックします。

「Googleにログイン」の画面が出るので、
利用するGoogleアカウントを選択し、ログインします。
※先ほども記載しましたが、何故かGoogle広告を利用しているGoogleアカウントではうまくいかないため、
 その場合は、他のアカウントを利用してください。

そして、次の画面がとても紛らわしいのですが、
「このアプリはGoogleで確認されていません」
という表示が出ます。
ここで「安全なページに戻る」ではなく、「詳細」をクリックし、(安全ではないページ)に移動をクリックします。

「Googleアカウントへのアクセスをリクエストしています」
という画面になるので、下にスクロールし、「許可」をクリックします。

無事に実行されたら対象のチャットルームで文章が送られます。

⑥トリガーの作成

最後にトリガーを作成します。
※トリガーとは、関数をどういう条件で実行するかを指定するものです。

画面左の目覚まし時計マークをクリックします。

右下の「トリガーを追加」をクリック。
「実行する関数を選択」の欄が「myFunctionSetTrigger」になっていることを確認。

次に時間ベースのトリガーのタイプを選択の欄を、アナウンスを送りたい頻度に合わせて選択します。
月に一度なら月ベースのタイマー
毎日なら日付ベースのタイマー
といった具合です。

時刻はプログラムで指定した時間より前の時間帯を選択します。
例えば、プログラムで8:00を指定した場合は、午前6時~7時を選択します。

毎月15日8:00にアナウンスを送りたい場合は、下記のような選択になります。

保存をクリックして、設定完了です。
お疲れさまでした!

4.まとめ

いかがだったでしょうか。
少し説明書きが長くなりましたが、
やってみると、意外と短時間でできたのではないでしょうか。

Googleスプレッドシートと連動させて、アナウンス内容を日によって変える
といったこともできるのですが、それはまたの機会にご紹介したいと思います。

それでは、GASとChatworkを活用して、
抜け漏れ0(ゼロ)のオフィスライフを送りましょう!

この記事を書いた人

nakase

入社4年目。WEB広告プランナーの中瀬です。WEB解析士。兵庫県宝塚市出身。1992年生まれ。 前職では求人メディアの営業を経験し、今はリスティング広告を中心にWEB広告の運用に携わるチームのリーダーです。また、弊社のSEO対策も兼務し、記事の執筆も担当しております。文字に起こすことで理解の解像度も上がり、刺激的な毎日です。日々の気づきを、お客様の成果に繋げられるようなアイデアに昇華できるよう努力します!twitterも更新中!趣味・嗜好は、アコギ(習いに通っています)、スポーツ観戦(Bリーグの中継をよく見ます)、ゲーム、お酒、アイドルのライヴ観戦、etc.