SPIRALは、主にエンタープライズ向けのローコードプラットフォームになります。ローコードプラットフォームなので、プログラミング知識がなくともWebアプリケーションを開発できるのが魅力です。
今回は、SPIRALのデータベースに登録されたタイミングでKintoneにもデータ登録してみます。
SPIRAL側のテーブル構造について
今回は最低限のデータ構造としています。名前は KintoneSync としていますので、コード部分は読み替えてください。
| No. | フィールド名 | フィールドタイプ | 差替キーワード |
|---|---|---|---|
| 1 | テキスト | テキストフィールド(64 bytes) | text |
| 2 | 同期日時 | 日付(○年○月○日 ○時○分○秒) | sync_at |
| 3 | KintoneId | 数字・記号・アルファベット(6 bytes) | kintone_id |
Kintoneアプリについて
Kintoneアプリ側も、テキスト(フィールド名Detail)が入るだけのシンプルなものです。
APIトークンを取得
Kintone側でAPIトークンを生成します。レコード追加の権限を付与してください。
生成後、アプリを更新して反映します。
フォーム表示時の処理
デフォルトのフォームでは 同期日時 や KintoneId が表示されるので、これは消しておきます。
確認フォームでも消しておきます。
データ登録完了時の処理
データ登録が完了した際にはサンキューページが読み込まれます。ここで、登録されているデータを元にKintoneへのデータ登録を行います。
<title>ご登録ありがとうございました。</title>
<?php // <!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=FAQ --> ?>
<?php
// 以下の情報は書き換えてください
$subdomain = 'YOUR_SUB_DOMAIN'; // サブドメイン
$appId = 1; // アプリID
$apiToken = '6Jy...3XT';
// リクエスト情報
$url = "https://{$subdomain}.cybozu.com/k/v1/record.json";
$data = [
'app' => $appId,
'record' => [
'Detail' => [
'value' => $SPIRAL->getParam("text") // 内容のデータ
]
]
];
$headers = [
'X-Cybozu-API-Token: ' . $apiToken,
'Content-Type: application/json'
];
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => json_encode($data)
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
// 登録されたレコードID
$recordId = $result['id'];
$recordId には 1 のような数字が入ります。
次に、この $recordId を新規登録したデータに対して反映します。
// SPIRALの元データを更新する
$dt = new DateTime('now', new DateTimeZone('Asia/Tokyo'));
$db = $SPIRAL->getDataBase("KintoneSync"); // 通常DBの名前
$id = $SPIRAL->getContextByFieldTitle("id"); // データのID
$params = array(
"sync_at" => $dt->format('Y/m/d H:i:s'),
"kintone_id" => intval($recordId)
);
$db->addEqualCondition("id", $id);
$count = $db->doUpdate($params);
?>
これでSPIRALにデータが新規登録されると、Kintoneにデータが追加されます。
まとめ
Kintoneに連携することで、データの利活用が進みます。他部署とのデータ連携にも使えるので、SPIRALとKintoneを利用している組織ではぜひ試してください。
現在、SPIRALではエンジニアβという無料アカウントを配布しています。SPIRALに興味がある型はこちらから試してみてください。
![FireShot Capture 252 - 通常DB一覧 - [pi-pe.smp.ne.jp].png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F197026%2Fe0163385-4463-434a-8c31-c9d1620a1b99.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=dada298e59b13b6b57ddc3d4ef84a975)


![FireShot Capture 254 - - [www.pi-pe.co.jp].png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F197026%2Fa8fb2001-e6c5-4b8e-9a8e-4127f51ba122.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=42767216e7911fb06ada9e63ea161525)
![FireShot Capture 255 - - [www.pi-pe.co.jp].png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F197026%2Ff5ce46f5-a91e-451b-8d32-ca51e01b92d8.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=df6bccefe65966633e803f2407b43f66)
![FireShot Capture 258 - 問い合わせ管理 - 11 - レコードの詳細 - [5e462.cybozu.com].png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F197026%2F94e59339-d6ef-4d88-8532-4d1f56c0958d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=620a6f3931f4f6aba042164817634428)
![FireShot Capture 257 - DBオペレーション } KintoneSync - [pi-pe.smp.ne.jp].png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F197026%2Fa1f0c92d-18e4-4e50-99f9-457731f659f6.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0f068a7d9f1a3bc1fd96f2563624694e)