プロセス管理機能を利用したいと思っています。
ですが、1つ1つフォームから利用するのではなく、一覧表から利用したいと思っています。
例えば、”A処理待ち”ないしは”ステータスA”一覧で表示させて、上部に次アクションのボタンを付けて一括で処理する。という使い方です。
上記要望を叶えるスクリプト(サンプル)を教えていただけないでしょうか。
プロセス管理機能を利用したいと思っています。
ですが、1つ1つフォームから利用するのではなく、一覧表から利用したいと思っています。
例えば、”A処理待ち”ないしは”ステータスA”一覧で表示させて、上部に次アクションのボタンを付けて一括で処理する。という使い方です。
上記要望を叶えるスクリプト(サンプル)を教えていただけないでしょうか。
中沢さん
cstapの瀧ヶ平です。
実際にそのようなコードを書いてみたので参考になれば幸いです。
以下のコードの<viewId>を適用したい一覧のviewIdに, 次アクション名を目的の値に変更して実装すれば問題なく動作すると思います。
(ステータスによって絞り込まれた一覧での利用を想定しています)
(function(){
"use strict";
kintone.events.on("app.record.index.show", function(event){
var records = event.records;
if(event.viewId == <viewId>){
var update = function(){
var data = records.map(function(r){return {id: r.$id.value, action:"次アクション名"}});
kintone.api(kintone.api.url("/k/v1/records/status", true), 'PUT', {app: kintone.app.getId(), records: data}).then(function(){
location.reload();
});
};
var button = document.createElement("button");
button.innerText = "Update";
button.onclick = update;
kintone.app.getHeaderMenuSpace().appendChild(button);
}
return event;
});
})();
CSTAP瀧ヶ平さん
早急な回答、ありがとうございます。
非常に助かります。
早速試してみます。
本当にありがとうございました。
先日はアドバイス頂きありがとうございました。
いろいろ試行錯誤し、現在以下のコードで試していますが、13行目のPUTリクエストにてエラーが出ているものと思われます。
■エラー
{message: “ステータスの変更に失敗しました。ほかのユーザーがステータス、またはステータスの設定を変更した可能性があります。”, id: “1505999166-2096046237”,…}
code: “GAIA_IL03”
id: “1505999166-2096046237”
message: “ステータスの変更に失敗しました。ほかのユーザーがステータス、またはステータスの設定を変更した可能性があります。”
■スクリプト
(function(){
“use strict”;
kintone.events.on(‘app.record.index.show’, function(event){
var records = event.records;
if(event.viewId == 5245175){
var update = function(){
var data = records.map(function(r){
return {
id: r.$id.value,
action:“依頼中”
}
});
kintone.api(kintone.api.url(‘/k/v1/records/status’, true), ‘PUT’, {
app: kintone.app.getId(),
_ records: data, _
}).then(function(){
location.reload();
});
};
var button = document.createElement(‘button’);
button.innerText = ‘一括ステータス更新’;
button.onclick = update;
kintone.app.getHeaderMenuSpaceElement().appendChild(button);
}
return event;
});
}());
考えられる要因等あれば、ご教授いただけないでしょうか。
宜しくお願いします。
中沢さん
おそらくプロセス管理の作業者にログインユーザーが指定されていないか、アクション実行の際に作業者を指定する必要があるレコードが存在する場合にアクションが失敗してるのではないかと思います。
前者の場合は運用で対処する方法かレコードの作業者フィールドを確認しログインユーザーでない場合にはdataから削除する方法で対応できます。
後者の場合はrecords.map関数の引数の関数内で返しているオブジェクトに assignee:作業者に指定したいユーザーのログイン名 を追加すれば対応できると思います。