kintone初心者なのですがよろしくお願い致します。
Aアプリで業務指示を出してBアプリで完了報告を出すアプリを作成しているのですが、
Bアプリで完了報告(ドロップダウンを完了)して保存したらAアプリの保存済みレコードのドロップダウンも未完了から完了に更新をしたいです。
※Aアプリ・Bアプリ共にドロップダウン⇒未完了・完了(初期値は未完了)
ドロップダウンのステータス(未完了・完了)を一覧で使用したいです。
ここのフォーラムに記載されていた下記のコードを参考にさせて頂いたのですがうまく動かなく(エラーは出ていないのですが)
ご教授お願い致します。
(function () {
"use strict";
var putAppId = 1; // アプリBのアプリID
var uniqueField = ラジオボタン;
kintone.events.on('app.record.detail.process.proceed', function (event) {
if (event.nextStatus === '完了') {
var uniqueFieldValue = event.record[uniqueField].value;
var body = {
'app': putAppId,
'updateKey': {
'field': uniqueField,
'value': uniqueFieldValue,
},
'record': {
'ラジオボタン': { // ラジオボタンのフィールドコード
'value': '完了'
}
}
};
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body, function (resp) {
// success
alert('アプリAを更新しました。');
}, function (error) {
// error
alert('アプリAが更新できませんでした。' + error);
});
}
return event;
});
})();
プログラミングはよく分かりませんが、
"uniqueField = ラジオボタン"というのは確かでしょうか?
更新処理をしたいということでしたら、更新のキー項目には"ラジオボタン"は使えないかと。
APIドキュメントにあたってみてはいかがでしょう。
https://developer.cybozu.io/hc/ja/articles/201941784
あと、今更ですがチュートリアルに大体書いてあるのでそちらをみるのも良いかと思います。
Yoshidaさま
ご返信ありがとうございます。
再度チュートリアルをやり直して見たのですが上記に結びつきそうなところを見つけられませんでした。
こんにちは
まず、使用しているフィールドがわかりません。
タイトルには「ラジオボタン」と書いてありますが、
詳細には「ドロップダウン」とあります。
処理は「プロセスステータス」を使用しています。
すべて「ラジオボンタン」でよろしいんでしょうか。
'app.record.detail.process.proceed'
これだとプロセスを変更した時に発火するイベントになりますが、
恐らくプロセスは使用しておらず、保存時に発火させたいのではないでしょうか。
発火イベントは以下の記事で確認できます。
https://developer.cybozu.io/hc/ja/articles/201941984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E8%BF%BD%E5%8A%A0%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88#success
if (event.nextStatus === '完了')
こちらもプロセスステータスが「完了」になったときにPUT(更新)する記述になっています。
以下サンプルコードになります。
動作確認はしていないので、フィールド名を変えていただいて確認してみてください。
わからないことがあればお答えします。
// 保存完了時、Bアプリの「Bラジオボタン」が「完了」だった時、
// Aアプリの「Aラジオボタン」を「完了」にする
(function () {
'use strict';
var putRecord = function (recordId) {
var params = {
app: appId, // 更新先のアプリID
updateKey: {
field: 'uniqueField', // 更新先の重複禁止フィールド
value: recordId, // 更新元の重複禁止フィールドの値
},
record: {
'Aラジオボタン': { // 更新したいフィールドID
value: '完了'
}
}
};
return kintone.api(kintone.api.url('/k/v1/record'), 'PUT', params).then(function (resp) {
alert('更新');
}, function (error) {
alert('失敗');
});
};
// 発火イベント配列
var events = ['app.record.create.submit.success', // 新規作成、保存成功時イベント
'app.record.edit.submit.success' // 編集、保存成功時イベント
];
// 処理
kintone.events.on(events, function (event) {
var record = event.record;
var Id = record['ID']['value']; // 重複禁止のID
// Bラジオボタンが完了だったらPUT処理実行
if (record['Bラジオボタン']['value'] === '完了') {
return putRecord(Id);
}
return event;
});
})();
mionix様
ご連絡ありがとうございます。
その通りでプロセスを使用しないで保存時に処理をしたいです。
根本的に間違えていたようですね。
試させていただきます。
何かわからないことがあればご相談させてください。
何卒よろしくお願い致します。
承知しました。
であれば、上記のコードで良いかと思います。
上手く処理が実行されない時はF12を押すとエラーが表示されます。
エラー文も参考になるのでご活用ください。
ご存じでしたら申し訳ありません。