弊社では、社内のコミュニケーションツールとして、チャットワーク(https://go.chatwork.com/ja/)を利用しています。
また弊社では毎週一回ある朝礼の後、アンケートを取ったりするのですが、その発信もチャットワーク上で行われます。
文章自体は、アンケートのURLを変えれば後は一緒なのですが、実はこれを毎週、朝礼が終わってから手動で配信するのは簡単なようで手間取りました。他の業務に気を取られ、朝礼終了から20分経ってから送るなんていうことも。

そこで、今回目指すのは「自動化」です!
チャットワークのAPIと、Google Apps Scriptを使って、
・事前にURLを指定する
・事前に指定した時間に送る
以上2つの方法を紹介したいと思います!

まず、チャットワークのAPIを使うには申請がいります。
以下のサイトを参考に、APIキーを取得しましょう。
https://developer.chatwork.com/ja/
下にある「API利用申請」を押して、管理者の承認を待ちましょう。

さて、今回上のようなメッセージを送りたいとします。
ここで、毎週変わるのはURLだけなので、URLだけを指定すれば後はなんとかしてくれる、そんなメソッドをはじめに作ってしまいましょう。

function choreiMessage(url){
  var str = "[toall]" //ルームの全員にToをつけている
  +"\n"+url
  +"\nに今日の朝礼の感想を書いて下さい!";
  return str;
}

\nというのは、改行のコードです。これを忘れると・・・・

となってしまうので気をつけましょう。かといって、

function choreiMessage(url){
  var str = "[toall]\n"+url+"\nに今日の朝礼の感想を書いて下さい!";
  return str;
}

とすると、(まだこの文字数ならば見れるものの、文章が長くなると)見づらくなります。
+をつければ、セミコロンで閉じなくても改行して文章をつなげることができます。
コード上でも実際に送信する文章に合わせて改行するほうが見やすいですね。

次は、これをどのルームに送るか、です。
指定するにはルームIDを取得する必要があります。
チャットワークを開いて、送りたいルームに遷移したときに、URLには、
https://www.chatwork.com/#!rid12345678
とあると思います。こちらの数字のみの部分”12345678”がルームIDとなります。

さて、次はルームIDを、Google Apps Scriptのコードに貼り付けます。
その前に、どうやってGoogleAppsScriptのコードエディタにたどり着くの?という話です。
https://script.google.com/ にアクセスして、新規スクリプトをクリック。

このようなものが出てきます。

ここに、先程書いたchoreiMessageとアンケートを送るためのメソッドを書いてしまいましょう。
ここからが、APIの出番です!

function choreiMessage(url){
  var str = "[toall]"
  +"\n"+url
  +"\nに今日の朝礼の感想を書いて下さい!";
  return str;
}

function sendEnquete() {
  var client = ChatWorkClient.factory({token: "yourapikey12345"}); // Chatwork API
  client.sendMessage({
    room_id:12345678, // ここでルームID
    body: choreiMessage("https://enquete.kotaete/ramdom_id") //ここでURLを指定する
  }); // message
}

なお、9行目の ChatWorkClientですが、これは何もしなければ使えません。
[リソース]>[ライブラリ]と選択して、以下の画面を表示して、
M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT
というコードを入れてください。
https://github.com/cw-shibuya/chatwork-client-gas
チャットワークのエンジニアの方が作ってくださったこちらを利用します。

設定は以下の画面のようにしてください。

同じく画面9行目のyourapikey12345に管理者から承認を受けて取得したAPIキーを、
11行目に先程取得したルームIDを貼り付けます。
次に12行目に送りたい文章を指定します。choreiMessageは文字列を返すメソッドなのでこのままでも大丈夫ですが、定型文を送りたいのであれば、
body:”送りたい文字列”
というように、””で囲ってください。

これで”何をどこに送るのか”という準備は完了ですが、あれ、あと一つ忘れていますね。

そう、”いつ自動で送るのか”です!画面に従って、トリガーを設定する必要があります。


画面に従って”今すぐ追加”しましょう。

送信に関することはsendEnqueteに集約しているので、実行にsendEnqueteを設定します。あとは画面のとおりにしてもらい、そして赤い部分を送信したい”いつ”を指定してください。
あとはこれで保存して待つのみです。

この時刻に設定してみましょう。

11:52になると・・・・

できました!成功です!

最後までお読みいただき、ありがとうございました!