LoginSignup
0
2

More than 1 year has passed since last update.

GASを使ってgoogle chat と unity cloud buildをインテグレートする方法

Posted at

ワタクシが従事しているプロジェクトが様々な理由でgoogle workspaceにチャットまで含めて移行することになり、slackではなくgoogle chatを使うことになった。

さて。
google chatはなんていうのか、slackと比べると実に至らないチャットで、まあgoogleが作るものはたいてい 「帯に短し、たすきに長し」 な代物が多いと、ワタクシなどは思っているのだが、それはさておきである。
ワタクシのプロジェクト、安いというのもありCIにunity cloud buildを使っているのだけど、こいつはslackやdiscordにはインテグレーション出来るが、google chatは出来ない。

これでgoogle workspaceの評価も出ているような気もするが…チャットにポストされないのはウザくてしょうがないので、仕方ないからGASを使ってウェブアプリを作り、これを経由することでgoogle chatとインテグレーションしたので、以下にそのやり方を書いておきたい。

1) google chat でWebhookを用意する

まずgoogle chatでwebhookを作る。これがないとchatと接続することは出来ない。
作り方はとても簡単だ。

  1. メニューより Webhookを管理を選ぶ。
  2. 着信Webhookの名前を決める(まあアイコンも決めてもいい)。
  3. URLが出来るので、これをコピーする(今やらなくてもよい)

2) GAS でBOTプログラムを作る

GASでプログラムを書く。このプログラムがunity cloud buildとgoogle chatを繋ぐためのchat botのコアになる。

dopost.gs
function doPost(e) {
  let str = e.postData.getDataAsString();
  let params = JSON.parse(str);
  let webhookUrl = "ここにWebhookのURLを入れる";

  //Googleチャットの投稿メッセージを定義
  let date = new Date();
  let jstdate = Utilities.formatDate(date, "JST", "yyyy/MM/dd (E) HH:mm");
  let message = {
    'text' : '== Build Information '+jstdate+' ==\n'
              +'Target: '+params.buildTargetName+' (#'+params.buildNumber+')\n'
              +'Status: '+params.buildStatus+"\n"
              +'Started by '+params.startedBy+"\n"
              +'====================='
  };

  //HTTPS POSTのオプションパラメータの設定。API認証のためheaders情報必須
  let options = {
    'payload' : JSON.stringify(message),
    'myamethod' : 'POST',
    'contentType' : 'application/json'
  };

  //WebhookのURLに対しHTTP POSTを実行する
  let response = UrlFetchApp.fetch(webhookUrl,options);
}

webhookのURLをちゃんと入れたら、あとはデプロイするだけである。

少し書いておくと、getDataAsStringをやっているのは、postされたモンをjsonでそのまま取る方法がないっぽかったのと、unity cloud buildがどーいうjsonを出しているのかslack APIのマニュアルを見て 「こんなもんだろう」 と想像はついたのだけど、実際わからなかったのでメッセージ本体にデバッグも兼ねてstrをぶっこんで、丸ごと表示テストしたからだ。
出す情報をカスタマイズしたい方は、let messageのゴチャゴチャやっているところを str に一度置き換えて、出てくるものを見て、各自でメッセージをカスタマイズして欲しい。

3) デプロイする

ウェブアプリとしてデプロイする。説明は面倒くさいので、マニュアルなりGAS入門なりを読んで欲しい。
ただ注意としてソースを修正してもデプロイしないと、実際のAPIが更新されないからね。これ、ワリとワナ。

で、デプロイされたURLをコピーしておく。

4) Unity Cloud Buildにwebhookを追加する

  1. Project Setting > Integrationを選択する。
  2. New Integrationを選択する。
  3. webhookを選択
  4. cloud buildのイベントを全部選択
  5. webhook URLにデプロイされたURLを入れる。

と、このようにして、google chatとunity cloud buildはイングレート可能である。
ちなみにgoogle chatのcard formatを使うと、もっとイロイロ出来るが、そんな必要はないだろう。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2