Google ChatからGASを経由して、kintoneに登録するbot

Google Chatでの発言をkintoneのスレッドに投げてくれるbotをGoogle Apps Scriptで作りました。

kintoneのスレッドってPCなら割とイケますが、スマフォだと結構しょっぱいので、他のチャットインターフェースがあるなら、そっちからメモできたら楽じゃん!ってので作りました。

あとは、kintoneでセキュアアクセスの設定してると、ログインが面倒なので、データの登録だけなら他のインターフェースからしたいなーとかそんなニーズにも対応してると思います。

// スレッドはAPIで更新ができないので、ユーザー名とパスワードを使う
var user = "ユーザー名";
var pass = "パスワード";

// Basic認証を実施している場合は、
var userBasic = "Basic認証ログイン名"
var basicPass = "Basic認証パスワード";

// スレッドのAPI
var threadApi = "https://xeex.cybozu.com/k/v1/space/thread/comment.json";

// Google Chatのbotにメンションを飛ばすと、このファンクションが走ります。
function onMessage(event) {
 
 // eventからメンションした発言を取り出します。
 var message = event.message.text;
 
 // 認証ヘッダーを作成
 // 通常ログイン
 var encoded = calcBase64(user + ":" + pass);
 // Basic認証用
 var encodedBasic = calcBase64(userBasic + ":" + pass);
 
 // この辺のヘッダーはお作法です
 var headers = 
 {
 "X-Cybozu-Authorization" : encoded, 
 "Authorization" : "Basic " + encodedBasic,
 "Content-Type" : "application/json"
 }
 
 // body部分のJSONを作ります
 // spaceにはスペースIDを、threadにはスレッドIDを設定します
 var payload = 
 {
 "space" : spaceid,
 "thread" : threadid,
 "comment" : {
 "text" : message
 }
 }
 
 var options =
 {
 "method" : "POST",
 "headers" : headers,
 "payload" : JSON.stringify(payload) ,
 "muteHttpExceptions" : true
 };
 
 // botに話しかけた内容をスレッドに登録!
 var response = UrlFetchApp.fetch(threadApi, options);
 
 // return { text: "返事" } で返すと、Google Chatに返事をしてくれます。
 // 適当に登録したことが分かるような文章を返しましょう。
 return {text: "「" + message + "」て登録したったで!"};
}

// 認証ヘッダー用にBase64エンコードをかけるファンクション
function calcBase64(str) {
 var blob = Utilities.newBlob(str);
 
 var encoded = Utilities.base64Encode(blob.getBytes());
 
 return encoded;
}

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク