# garoon からkintoneへの連系について

**URL:** <https://community.cybozu.dev/t/topic/5006>\
**Category:** Garoon カスタマイズ\
**Created:** [2020 年 3 月 26 日午後 12:50 UTC](https://community.cybozu.dev/t/topic/5006 "2020-03-26T12:50:10Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1349](https://avatars.discourse-cdn.com/v4/letter/l/65b543/32.png) [@Legacy\_Account1349](https://community.cybozu.dev/u/Legacy_Account1349)\
**Post date:** [2020 年 3 月 26 日午後 12:50 UTC](https://community.cybozu.dev/t/topic/5006/1 "2020-03-26T12:50:10Z")

</div>

素人で申し訳ございません。下記、コードにてgaroonのワークフローの設定にJavaScript / CSSによるカスタマイズで.jsファイルを読み込んだら一応承認者が1人ならkintoneアプリのレコードを作成する事ができましたが、承認者が3人になるとレコードが3つ出来てしまいます。複数承認者が居てもワークフローでの1申請につき、1つだけkintoneレコード追加したいのですがどの様にコードを変更すれば良いでしょうか？できれば最終承認者が承認したらレコードを1つ作成できる様にできたら嬉しいです。それできるとかなり業務が捗るのでご意見伺えたら幸いです。よろしくお願い致します。

&nbsp;

/\*\*  
\* Garoon JavaScript APIを使ったサンプルプログラム  
\*  
\* 「grwf\_to\_kinapp.js」ファイル  
\*  
\* Copyright (c) 2017 Cybozu  
\*  
\* Licensed under the MIT License  
\*/  
(function() {  
‘use strict’;  
// xxx部分にkintoneのアプリIDを入力する  
var kintoneAppId = 6;

// kintoneにワークフローのデータを登録  
function addKintoneTask(token, request) {  
var xmlhttp = new XMLHttpRequest();  
xmlhttp.open(‘POST’, ‘/k/v1/record.json?\_\_REQUEST\_TOKEN\_\_=’ + token);  
xmlhttp.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’);  
xmlhttp.setRequestHeader(‘Content-Type’, ‘application/json’);  
var body = {};  
body.app = kintoneAppId;  
body.record = {};  
body.record[‘shimei’] = {};  
body.record[‘shimei’].value = request[‘items’][‘shimei’][‘value’];  
body.record[‘daihyousyashimei’] = {};  
body.record[‘daihyousyashimei’].value = request[‘items’][‘daihyousyashimei’][‘value’];  
body.record[‘torihikisakimei’] = {};  
body.record[‘torihikisakimei’].value = request[‘items’][‘torihikisakimei’][‘value’];  
body.record[‘rinku’] = {};  
body.record[‘rinku’].value = location.href;  
xmlhttp.send(JSON.stringify(body));  
xmlhttp.onload = function() {  
return xmlhttp.responseText;  
};  
}

// 承認後にkintoneのCSRFトークンを取得する。  
garoon.events.on(‘workflow.request.approve.submit.success’, function(event) {  
// console.log(event);  
var request = event.request;

return garoon.connect.kintone.getRequestToken().then(function(token) {  
try {  
addKintoneTask(token, request);  
} catch (e) {  
alert(e);  
}  
});  
});

})();

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1657](https://avatars.discourse-cdn.com/v4/letter/l/f4b2a3/32.png) [@Legacy\_Account1657](https://community.cybozu.dev/u/Legacy_Account1657)\
**Post date:** [2020 年 4 月 2 日午前 7:54 UTC](https://community.cybozu.dev/t/topic/5006/2 "2020-04-02T07:54:33Z")

</div>

寺尾さん

こんにちは。

&nbsp;

該当のコードに関しては、

```
garoon.events.on('workflow.request.approve.submit.success', function(event) {

```

と記載があるので、ワークフローにて、[承認する]ボタンをクリックし、サーバーの保存が成功した後に

記述した処理が動きます。

処理内においては、イベントが動いた際、addKintoneTask(kintone への登録処理)が動くので、承認するたびに

登録がされる状況となります。

なので、承認者が最終承認者である場合にのみ、登録処理を行うようにコードを修正してあげることで、希望の形になるのではないかと思います。

また、複数回の登録を行いたくないのであれば、addKintoneTaskを実行する前に、登録を行おうとしている情報をもとに、

一度kintoneのレコードを取得し、あったら登録しないor更新する。なかったら登録するといった処理を行うことで、承認者の人数を問わず、

1件のレコードにまとめることはできると思います。

&nbsp;

&nbsp;

&nbsp;
