krewDataの機能 > リアルタイム実行 > kintone外部からの処理の実行 |
任意実行APIは、kintoneアプリをカスタマイズするJavaScriptコードから呼び出す方法以外にも、kintone外部で動作する任意のアプリケーションから実行することができます。
krewDataの任意実行APIは、CORS制約によりクロスドメイン通信による実行を許可していません。 |
データ編集フローの実行時に使用するパラメータは、実行要求API(run)のリクエストパラメータとしてレコード情報(record)を設定します。設定するレコード情報は、kintone APIのレコードの取得(GET)/レコードの登録(POST)/レコードの更新(PUT)(record.json)で取得、または設定するレコード情報オブジェクトと同じ形式です。
本ページのサンプルコードでは、以下のレコード情報をパラメータとして指定しています。レコード情報に含まれるフィールドコード「部門名」の値「営業部」は、データ編集フローのコマンドでパラメータ「%部門名%」を指定することで参照することができます。
var record = { |
---|
以下にNode.jsでkrewDataの任意実行APIを実行するサンプルコードを示します。
kintoneアプリをカスタマイズした任意実行API呼び出しのサンプルコードはAPIリファレンスを参照してください。 |
サンプルコード |
コードのコピー
|
---|---|
const request = require('request-promise'); async function runKrewData() { var url = 'https://api.krewdata.grapecity.com/trigger/v1/abcdefghijklmn'; var krewdataAppUrl = 'https://yourdomain.cybozu.com/k/123'; var serialNumber = 'abcdef-jklmno-pqrstu-xyz123-456789'; // 実行要求API(run)のリクエストパラメータ var user = 'krewdata@example.com'; var appId = '1234'; var record = { "部門名": { "value": "営業部" } } // アクセストークンを要求する var tokenBody = { 'krewdataAppUrl': krewdataAppUrl, 'serialNumber': Buffer.from(serialNumber).toString('base64') }; var tokenResponse = await sendRequest('token', url, tokenBody); console.log("token response: " + JSON.stringify(tokenResponse)); // 実行単位の実行を要求する if (tokenResponse.code == 200) { var accessToken = tokenResponse.accessToken; var runBody = { 'accessToken': accessToken, 'user': user, 'appId': appId, 'record': record }; var runResponse = await sendRequest('run', url, runBody); console.log("run response: " + JSON.stringify(runResponse)); // 実行単位の実行状況を確認する if (runResponse.code == 200) { var taskId = runResponse.taskId; var statusBody = { 'accessToken': accessToken, 'taskId': taskId }; var statusInterval = setInterval(async function () { var statusResponse = await sendRequest('status', url, statusBody); console.log("status response: " + JSON.stringify(statusResponse)); if (statusResponse.taskStatus == 'Success' || statusResponse.taskStatus == 'Failure') { clearInterval(statusInterval); } }, 5000); // 5sec } } } async function sendRequest(api, url, body) { var options = { method: 'POST', uri: url + '/' + api, json: body, headers: { 'Content-type': 'application/json' } }; return new Promise((resolve, reject) => { request(options) .then((response) => { resolve(response); }) .catch((err) => { console.log("Error: " + err); reject(err); }); }); } runKrewData(); |