現在、日報をアプリで作っています。
文字列フィールド(自動計算の式有り)を対象にアプリ内レコードを参照してチェックを行うソースをほかのサイトの投稿を参考に書いてみましたがqueryの書き方がよく分かっていません。現在動かない状態です。
(参考サイトは以前参考にしたのでURLが添付できませんでした…)
プラグインで解決したかったのですが、モバイル版にも対応したいのでスクリプトでの解決をしたいと思っています。
エラー部分は日付フィールド(date)に表示しています。
文字列フィールドコード:Date_Name_Mobile
//以下ソースコード
(function() {
“use strict”;
kintone.events.on([
‘app.record.create.submit’,
‘app.record.edit.submit’,
‘mobile.app.record.create.submit’, // 追記箇所
‘mobile.app.record.edit.submit’ // 追記箇所
], function(event) {
console.log(event);
var record = event.record;
var key_field = ‘Date_Name_Mobile’;
var own_id = event.recordId ? event.recordId : null; // 新規でnull、編集時には値がセットされる/修正箇所
var query = ‘’;
// フィールドが空の場合にはここで、return
if (record[key_field].value.length === 0) {
return event;
}
for (var i = 0; i < recor.key_field.value.length; i++) {
query += key_field + ’ in (“’ + record[key_field].value + '”) or ';
}
// 新規登録(null)と編集(自レコード除外)に対応
if (own_id) {
query = query + ’ and $id != ’ + own_id;
}
// 検索対象のレコードは0または1個なので、limit 1で絞り込み
query = query + ’ limit 1’;
// 重複チェック
return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, {
app: event.appId, // 修正箇所
query: query
}).then(function(resp) {
// レコードの重複をフィールドエラーにセット
if (resp.records.length === 1) {
record.date.error = ‘この日付の日報は登録済みです’;
}
return event;
}).catch(function(err) {
event.error = ‘既存レコードの取得に失敗しました。’;
return event;
});
})
})();