実現したいこと
アプリ構成
・会員アプリ (key:会員番号) YY-0001 ※最新入金年度を保持
・会員入金アプリ (key:会員番号>入金年度) YY-0001 >YYYY
会員入金アプリに入金年度レコード作成時に会員アプリの入金年度を更新したい
エラー情報
会員入金アプリから会員番号をkeyに会員アプリのレコードidをgetするところでエラーとなる。
利用したソースコード
(function() {
‘use strict’;
kintone.events.on(‘app.record.create.submit.success’, function(event) {
window.alert(‘0000’);
var ProjectNum = event.record.会員番号自動.value;
window.alert(ProjectNum);
// アプリAのステータスの値
var StatusA = event.record.入金年度.value;
window.alert(StatusA);
window.alert(‘0001’);
return getRecordId(ProjectNum)
.then(function(id) {
putRecord(id, StatusA);
});
});
var getRecordId = function(NUM) {
window.alert(‘a’);
var query = ‘会員番号自動 = ’ + NUM
var params = {
“app”: 6,
“query”: query
};
window.alert(query);
return kintone.api(kintone.api.url(’/k/v1/records’), ‘GET’, params)
.then(function(resp) {
window.alert(‘0002’);
var RecordId = resp.records[0].$id.value;
window.alert(RecordId);
return RecordId;
});
};
var putRecord = function(recordID, statusVal) {
window.alert(‘b’);
var params = {
app: 6,
id: recordID,
record: {
入金年度: {
value: StatusA
}
}
};
return kintone.api(kintone.api.url(‘/k/v1/record’), ‘PUT’, params)
.then(function(resp) {
window.alert(‘会員DBの入金年度を変更しました。’);
});
};
})();
試したこと
エラーログの確認を試してみましたが下記がでていてよくわかりませんでした。
kintone.api(kintone.api.url(‘/k/v1/records’), ‘GET’, parms)
-
Promise {<pending>}
-
__proto__: Promise
-
[[PromiseState]]: “rejected”
-
[[PromiseResult]]: Object
1. code: "CB\_VA01"
2. errors:
3. id: "MUA9mb84pEGN7t507rr7"
4. message: "入力内容が正しくありません。"
再現条件
- 画面・イベント:
保存をした時のイベント
- カスタマイズに関連するフィールド(フィールド種類/フィールド名/フィールドコード):
入金年度
- 権限設定:
とくになし
- デバイス(PC or モバイル):
PC
- OS・ブラウザ:
CHROME
- IP制限などネットワークに特殊なことがあれば:
特になし
仲さん、こんにちは。プロジェクト・アスノートの松田です。
エラーメッセージの message: “入力内容が正しくありません。” は、
REST APIに渡している、paramsの内容が正しくない書き方になっているというエラーなので、
Chromeのデベロッパーツールでデバッグして、この中身が正しいかどうかチェックしてみたらいいと思います。
よくある間違いポイントとしては、
クエリーの値が文字列か数値かによって、クオーテーション有無が異なるところや、
変数で渡しているデータが正しくない等。
あと、パット見ですが、putRecord の関数内のREST APIパラメータで、
アプリIDを指定していますが、6が全角になっています。
あと、クエリーの入金年度の値が、関数定義の引数で指定している変数と異なっています。
ここは関数の中なので、引数で指定した変数を指定してあげる必要がありますね。
REST APIを含むカスタマイズを行うときは、デバッグのやり方をマスターしておかないと
エラーになったときになかなか抜け出せないですね。
以上、参考になりますでしょうか。
プロジェクト・アスノートの松田さま
ご回答誠にありがとうございます。
下記2点を直しましたが、GET処理が動きません。
原因、もしくは、デバッグのやり方をご教授いただけないでしょうか?
何度も申し訳ありません。
①ご指摘いただきました部分
・アプリIDの全角を半角
・クエリーの入金年度の値を、関数定義の引数と合わせる
②気になった部分
・"app"→app "query"→query
(function() {
‘use strict’;
kintone.events.on(‘app.record.create.submit.success’, function(event) {
window.alert(‘0000’);
var ProjectNum = event.record.会員番号自動.value;
window.alert(ProjectNum);
// アプリAのステータスの値
var StatusA = event.record.入金年度.value;
window.alert(StatusA);
window.alert(‘0001’);
return getRecordId(ProjectNum)
.then(function(id) {
putRecord(id, StatusA);
});
});
var getRecordId = function(ProjectNum) {
window.alert(‘a’);
var query = ‘会員番号自動 = ’ + ProjectNum;
var params = {
app: 6,
query: query
};
window.alert(query);
return kintone.api(kintone.api.url(’/k/v1/records’), ‘GET’, params)
.then(function(resp) {
window.alert(‘0002’);
var RecordId = resp.records[0].$id.value;
window.alert(RecordId);
return RecordId;
});
};
var putRecord = function(recordID, StatusA) {
window.alert(‘b’);
var params = {
app: 6,
id: recordID,
record: {
入金年度: {
value: StatusA
}
}
};
return kintone.api(kintone.api.url(‘/k/v1/record’), ‘PUT’, params)
.then(function(resp) {
window.alert(‘会員DBの入金年度を変更しました。’);
});
};
})();
仲さん、こんにちは。
会員番号は文字列(1行)フィールドですよね? 例「YY-0001」
これは文字列なので、クエリーで条件指定するときに、
会員番号自動 = “YY-0001”
というクエリを渡す必要があると思います。
全体をアプリで動かす前に、REST APIの処理をコンソールとかで動作確認し、
まずそこで動くことを確認した後に全体処理に組み込むといいですよ。
松田さま
ご回答ありがとうございます。
文字列(1行)フィールドは変数であってもコーテーションを付けないいけないんですね。
変数の場合どうやってつけるか悩んだのですが、
‘会員番号自動 = "’ + ProjectNum + ‘"’;
でようやく目的の処理が動きました。
※コンソールとかでの動作確認はまだできるようになっていないので、また頑張ります。
ほんとにありがとうございました。感謝いたします!!
まずは想定の動作が動いてよかったです。
デバッグは必須なので、先にこちらを勉強されたほうがいいと思います。
あとは、実際の業務で使用されるアプリに適用する最は、特に更新系においては
いろいろと考慮すべき点があります。
アプリ構成の見直しも含めて、しっかり検討されたらよろしいかと思います。