アプリAの特定のフィールドの情報を保存時に他アプリに転記したい

現在、本サイトのコードを参考に以下の機能を実装しようと考えておりますが、エラーが出ており、その解決策が見つかっておりません。

-実装したいこと-
"請求書管理"アプリにおいてドロップダウンの項目、(フィールドコード:“請求書発行フラグ”)の値を"請求書発行済"に変えると別の案件管理アプリの対応するレコードのドロップダウンの項目、(フィールドコード:“請求書発行フラグ”)の値を同様に更新する

レコード番号の紐づけは"案件管理アプリ"にてアクションを実行すると"請求書管理アプリ"にレコード番号、案件名などがコピーされて新規作成される形になっており、各請求書には対応する案件のレコード番号が転記されている状況です。

現在のコード

(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をいくつか設定して実行状況を確認したいと思います。