現在、本サイトのコードを参考に以下の機能を実装しようと考えておりますが、エラーが出ており、その解決策が見つかっておりません。
-実装したいこと-
"請求書管理"アプリにおいてドロップダウンの項目、(フィールドコード:“請求書発行フラグ”)の値を"請求書発行済"に変えると別の案件管理アプリの対応するレコードのドロップダウンの項目、(フィールドコード:“請求書発行フラグ”)の値を同様に更新する
レコード番号の紐づけは"案件管理アプリ"にてアクションを実行すると"請求書管理アプリ"にレコード番号、案件名などがコピーされて新規作成される形になっており、各請求書には対応する案件のレコード番号が転記されている状況です。
現在のコード
(function() {
‘use strict’;
// 案件管理アプリのレコードIDを取得する関数
var getPJRecordId = function(Num) {
var params = {
app: 22, // 案件管理アプリのアプリ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;
});
};
// 案件管理アプリのステータスを更新する関数
var putRecord = function(recordID, statusVal) {
var params = {
app: 22, // 案件管理アプリのアプリID
id: recordID,
record: {
“請求書発行フラグ2”: { // ステータスフィールドのフィールドコード
value: statusVal
}
}
};
return kintone.api(kintone.api.url(‘/k/v1/record’), ‘PUT’, params)
.then(function(resp) {
window.alert(‘案件管理の請求書発行フラグを変更しました。’);
});
};
// レコード編集の保存ボタンを押した時に処理を実行する
kintone.events.on(‘app.record.edit.submit’, function(event) {
// 請求書管理アプリの案件番号の値
var ProjectNum = event.record.Num.value;
// 請求書管理アプリの"請求書発行フラグ2"の値
var StatusA = event.record.Status.value;
// REST APIを複数実行するため、Promiseを使って同期処理にする
return getRecordId(ProjectNum)
.then(function(id) {
putRecord(id, StatusA);
});
});
})();
お手数をおかけしますが、ご教授いただければ幸いです。
こんにちは。
最後の方でgetRecordId()を呼び出してますが、実際の関数名はgetPJRecordId()のようなのですが、そこが原因では無いですよね?(^_^;
コメントありがとうございます。
申し訳ありません。コードの最後の反映が漏れておりました。getRecordId()が正しい関数名となりますので、以下が最新のコードとなります。
(function() {
‘use strict’;
// 案件管理アプリのレコードIDを取得する関数
var getRecordId = function(Num) {
var params = {
app: 22, // 案件管理アプリのアプリ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;
});
};
// 案件管理アプリのステータスを更新する関数
var putRecord = function(recordID, statusVal) {
var params = {
app: 22, // 案件管理アプリのアプリID
id: recordID,
record: {
“請求書発行フラグ2”: { // ステータスフィールドのフィールドコード
value: statusVal
}
}
};
return kintone.api(kintone.api.url(‘/k/v1/record’), ‘PUT’, params)
.then(function(resp) {
window.alert(‘案件管理の請求書発行フラグを変更しました。’);
});
};
// レコード編集の保存ボタンを押した時に処理を実行する
kintone.events.on(‘app.record.edit.submit’, function(event) {
// 請求書管理アプリの案件番号の値
var ProjectNum = event.record.Num.value;
// 請求書管理アプリの"請求書発行フラグ2"の値
var StatusA = event.record.Status.value;
// REST APIを複数実行するため、Promiseを使って同期処理にする
return getRecordId(ProjectNum)
.then(function(id) {
putRecord(id, StatusA);
});
});
})();
あ、そうでしたか、失礼しました。
エラーが出るとの事ですが、どのようなエラーが出るのでしょうか?
以下の条件で実施したところコンソール画面に以下のエラーメッセージが表示されてレコードの保存が出来なくなります。
【実施条件】
ブラウザ:google chrome
請求書管理のレコード詳細編集画面にて保存ボタンをクリック
【エラーメッセージ】
show.js:116 Uncaught TypeError: Cannot read property ‘value’ of undefined
at download.do?app=39&contentId=7177&jsType=DESKTOP&hash=67a6465775bb8ef332ae205c93395f1efff280e6:39
at show.js:254
at new Oj (show.js:120)
at Yw (show.js:254)
at show.js:253
at f.gw (show.js:122)
at fk (show.js:124)
at ak (show.js:123)
at Oj.Cz (show.js:1077)
at Hj (show.js:119)
請求書管理のレコードに対して案件管理アプリのレコードの紐づけが出来ていないためフィールド""請求書発行フラグ2""の値が取得できていないことを疑っております。
なるほど。
確認する事としては、
・getRecordId()が正常に実行できているか(alertで結果を表示するとかして)
・連携しているフィールドのフィールドコードが合っているか
あたりでしょうか。
アドバイスありがとうございます。
alertをいくつか設定して実行状況を確認したいと思います。