見出し画像

GAS ✖️ Slash Commands ✖️ Kintone

最近ほんとに良く耳にするKintone。
データの収集や整理、業務改善ツール、案件管理や勤怠管理・・・
柔軟性・拡張性・汎用性などを兼ね備えた優れものサービス。
ただ、ちょっとした作業なのに画面にログインしてスペース選択したりアプリ選択したりが意外と面倒。
普段Slackでメッセージのやりとりしたり、ToDo管理したりしている人からしたら、Slackでのやりとり中にSlackから離れて他のサービスでなんかする事すら面倒なこと、ありますよね。
そんな時には、ささっとSlackのコマンドを自作して、ささっとGASを書いちゃえば、全てSlack上で作業可能に!!!

本記事はこんな方におすすめ

・普段Slackをメインに利用している
・Kintone利用中
・GASを触った事がある

やりたい事

・Kintoneの画面を使わずにSlackでデータを取得(参照)
・Kintoneの画面を使わずにSlackからデータの更新

手順(3STEP)

 たったの3Stepで完了です!

1. GASをちょっとだけ書く
2. SlackでSlash Commandsを作成する
3. SlackでSlash Commandsを叩く

1. GASをちょっとだけ書く

1) GASを作成

a. Kintone使うための設定

スクリーンショット 2020-04-13 19.34.14

b. レコードデータ取得用GASを作成

function doPost(e) {

 var param = e.parameter.text
 
 var apps = {
   YOUR_APPLICATION1: {
     appid: xxx, // アプリID
     token: 'xxx' // トークン
   }
 };  
 var kintoneManager = new KintoneManager.KintoneManager('xxx', apps); // サブドメイン
 var query = '';
 if (param) {
   query = 'record_no = '+param;
 } 
 var response = kintoneManager.search("YOUR_APPLICATION1", query);
 var content = JSON.parse(response.getContentText());
 var record = content.records;
 var responseText = '';
 for (var i = 0; i < record.length; i++) {
   responseText += 'record no = ' + record[i].record_no.value + ' item = ' +record[i].item.value + ' status = ' + record[i].status.value + '\n';
 }
 response = { text: responseText };
 Logger.log(e.parameter);

 return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}

c. レコード更新用GASを作成

function doPost(e) {

 var param = e.parameter.text
 var params = param.split(' ');
 var recordNo = params[0];
 var status = params[1];
 var apps = {
   YOUR_APPLICATION1: {
     appid: xxx, // アプリID
     token: 'xxx' // トークン
   }
 };  
 
 var str = '[';
 str += Utilities.formatString('{"id": "%s", "record":', recordNo);
 str += Utilities.formatString('{"status": { "value": "%s" }', status);
 str += '}}]';

 var kintoneManager = new KintoneManager.KintoneManager('xxx', apps); // サブドメイン
 var records = JSON.parse(str);
 var response = kintoneManager.update("YOUR_APPLICATION1", records);
 var code = response.getResponseCode();
 var responseText = "Update record_no = " + recordNo + " status = " + status;
 response = { text: responseText};
 Logger.log(e.parameter);

 return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}

2) 公開設定

公開 > ウェブアプリケーションとして導入
Who has access to the app: Anyone, even nonymous

スクリーンショット 2020-04-13 19.15.42

3) 作成した(公開設定)した際のURLを保存しておく

2. SlackでSlash Commandsを作成する

1) https://api.slack.com/apps にアクセス

スクリーンショット 2020-04-13 18.53.20

2) Create New App

App Name 
任意のアプリ名を入力します。今回はKintoneとの連携用なのでKintoneにしました。
Development Slaack Workspace
今回作成したアプリ(コマンド)を適用するワークスペースを選択します。
スクリーンショット 2020-04-13 18.54.37

3) Basic Information > Slash Commands

Slash Commandsを選択します。

スクリーンショット 2020-04-13 18.55.04

4) Create New Commmand

スクリーンショット 2020-04-13 18.55.20

コマンド名や利用方法などを入力していきます。
RequestURLはGASで公開設定したURL(※)を入力します。 
※ 1. - 3) で保存したURL

レコード情報取得用

スクリーンショット 2020-04-13 19.08.53

レコード更新用

スクリーンショット 2020-04-13 21.37.18

5) Install App to Workspace

ワークスペースに作成したアプリをインストール

スクリーンショット 2020-04-13 19.28.31

3. SlackでSlash Commandsを叩く

ここまできたら準備完了!
あとはSlackで作成したコマンドを叩くのみ。

1) /getkintonerecord・・・レコードを取得

スクリーンショット 2020-04-13 21.45.29

2) /getkintonerecord 1・・・レコード番号を指定して取得

スクリーンショット 2020-04-13 21.46.12

3) /updatekintonerecord 1 Updated
・・・レコード番号1を指定してstatusをUpdatedに更新

スクリーンショット 2020-04-13 21.48.19

4) /getkintonerecord・・・更新後のレコードを取得

スクリーンショット 2020-04-13 21.47.37

Slackでレコード情報を取得して、対象のレコードに対して更新。
これがわざわざKintone画面を開かなくてもOKです。
メンバー間で何らかのやりとり中に更新することで無駄な画面遷移はカットできます!

拡張性

上記ではレコードの取得と更新を簡単に作成しましが、Slash CommandsとGASの内容を拡張すれば登録や削除、GASからのGmail送信などもできちゃいます。
LINEにも送りたい!!!!って事もできます。

kintoneアプリ無料相談






この記事が気に入ったらサポートをしてみませんか?