皆様教えてください。
管理Aというアプリに以下のフィールドがあります。
案件番号(文字列1)
氏名(文字列1)
電話番号(文字列1)
ステータス(ドロップダウン)
管理Bにも管理Aと同じフィールドがあり、管理Aのレコードをアクション機能で上記フィールドを管理Bへコピーして保存しています。
管理Aのステータス(ドロップダウン)には以下の項目があります。
未着手
着手
完了
管理Aでレコードの編集でステータスを「完了」に更新した際、
管理Bで管理Aと同じ案件番号のレコードのステータスを「完了」に更新させたいのですが、Java Scriptでどのように書いたらよいでしょうか。
どうぞ宜しくお願い致します。
ススムさん
管理Aアプリの編集時(保存ボタンを押した時)にREST APIで管理Bへ更新処理を行えばできそうですね。
ただし、更新の場合は「どのレコードの情報を更新するか」でレコードIDが必要になり
そのためにまず 案件番号 等の 他のレコードと重複しないフィールド で絞り込みのクエリを書いて、
管理Bアプリの更新したいレコードIDを「取得」する必要があります。
つまり 「レコードID取得」→ 「そのレコードIDに対して更新」
という2つのREST APIを実行する必要がありそうです。
以下、簡単なプログラムを書いてみました (エラー処理等は書いていないです)
(function() {
'use strict';
// アプリBのレコードIDを取得する関数
var getRecordId = function(Num) {
var params = {
app: 123, // アプリBのアプリID
query: 'Num = ' + Num
};
return kintone.api(kintone.api.url('/k/v1/records'), 'GET', params)
.then(function(resp) {
var RecordId = resp.records[0].$id.value;
return RecordId;
});
};
// アプリBのステータスを更新する関数
var putRecord = function(recordID, statusVal) {
var params = {
app: 123, // アプリBのアプリID
id: recordID,
record: {
Status: { // ステータスフィールドのフィールドコード
value: statusVal
}
}
};
return kintone.api(kintone.api.url('/k/v1/record'), 'PUT', params)
.then(function(resp) {
window.alert('アプリBのステータスを変更しました。');
});
};
// レコード編集の保存ボタンを押した時に処理を実行する
kintone.events.on('app.record.edit.submit', function(event) {
// アプリAの案件番号の値
var ProjectNum = event.record.Num.value;
// アプリAのステータスの値
var StatusA = event.record.Status.value;
// 完了以外は処理をしない
if (StatusA !== '完了') {
return;
}
// REST APIを複数実行するため、Promiseを使って同期処理にする
return getRecordId(ProjectNum)
.then(function(id) {
putRecord(id, StatusA);
});
});
})();
BB様
お世話になっております。
ススムです。
教えていただきまして、ありがとうございます。
教えていただいた内容で、いくつか質問がございます。
>管理Aアプリの編集時(保存ボタンを押した時)にREST APIで管理Bへ更新処理を行えばできそうですね。
→REST APIとはなんでしょうか。どこかで設定が必要でしょうか。
> 案件番号 等の 他のレコードと重複しないフィールド で絞り込みのクエリを書いて、
→絞り込みのクエリを書いてとは、別でクエリを書かないといけないということでしょうか。
>Status: { // ステータスフィールドのフィールドコード
→フィールドコードはどの位置に書けばよろしいでしょうか。
全くの素人で申し訳ございません。
どうぞよろしくお願い致します。
ススムさん
kintone REST APIとは、kintoneのデータを操作することができるAPIです。
詳しくはこちらの記事が参考になります。
※ REST APIを使うためにはkintoneのスタンダードコースを契約する必要があります。
▼ REST APIを「叩く」って何?ツール使ったら初心者でも簡単だった
https://kintone-blog.cybozu.co.jp/developer/000270.html
記載したJavaScriptコード内にクエリは記載しています。
クエリとは「絞り込み条件」のようなものです。
Statusという文字がフィールドコードに該当します。
→例えば、ご自身のフィールドのフィールドコードが AAA であれば AAA: { となります。
/)
///)
/,.=゙''"/
/ i f ,.r='“-‐‘つ____ !!PUTも対応!!
/ / _,.-‐’~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ”\ `ー’´ /