kintoneのアプリを開いたときに、
更新日時が90日以上前のレコードのデータを操作する(ドロップダウンで「有効」を「無効」にする)といったことは可能ですか。
どなたかご教示ください。
kintoneのアプリを開いたときに、
更新日時が90日以上前のレコードのデータを操作する(ドロップダウンで「有効」を「無効」にする)といったことは可能ですか。
どなたかご教示ください。
アプリを開いた時なので一覧画面が表示されたイベントで更新日時が90日以上前のレコードを全て取得し、
1件1件レコードIDを条件に「無効」状態に更新するイメージでしょうか?
↓こんな感じで一覧画面の表示イベントで更新日時の条件に該当するレコードを取得し、そのレコードの状態を無効にするという処理は動くかと思います。
kintone.events.on('app.record.index.show', async(event) => {
const data = await kintone.api('/k/v1/records', 'GET', {app: event.appId, query: '更新日時 >="2022-04-18" order by 更新日時 asc limit 100'});
data.records.forEach(record => {
kintone.api('/k/v1/record', 'PUT', {app: event.appId, id: record.$id.value, record: {状態:{value : '無効'}}});
});
});
masuda様
ご回答いただきありがとうございます。
初歩的な質問で申し訳ないのですが、上記の文章ですと「2022/4/18より100日以前」となっているかと思いますが
「一覧画面を開いた日付より〇〇日以前のレコード」とすることはできますでしょうか。
よろしくお願いいたします。
初歩的な質問で申し訳ないのですが、上記の文章ですと「2022/4/18より100日以前」となっているかと思いますが
「一覧画面を開いた日付より〇〇日以前のレコード」とすることはできますでしょうか。
可能です。
‘更新日時 < 本日-n日’
という条件にすればOKです。
本日-n日はjavascriptのDateクラスを使えば求められます。
更新日時が90日以上経過してる条件を書いてみました。
kintone.events.on('app.record.index.show', async(event) => {
const date = new Date();
date.setDate(date.getDate() - 90);
const data = await kintone.api('/k/v1/records', 'GET', {app: event.appId, query: '更新日時 < "' + formatDate(date) + '" order by 更新日時 asc limit 100'});
data.records.forEach(record => {
kintone.api('/k/v1/record', 'PUT', {app: event.appId, id: record.$id.value, record: {状態:{value : '無効'}}});
});
});
function formatDate(dt) {
var y = dt.getFullYear();
var m = ('00' + (dt.getMonth()+1)).slice(-2);
var d = ('00' + dt.getDate()).slice(-2);
return (y + '-' + m + '-' + d);
}
ありがとうございます!!
このまま使えそうです!
調べてみたら一度に取得できるレコードが500までみたいなので、
レコード取得時に、更新日時が90日以前で状態が「無効」ではないものを取得し、そのレコードの状態を「無効」に変更することは可能でしょうか。
度々申し訳ございませんが、何卒宜しくお願い致します。
レコード取得時に、更新日時が90日以前で状態が「無効」ではないものを取得し、そのレコードの状態を「無効」に変更することは可能でしょうか。
可能です。状態が無効以外を追加すればOKです。
ありがとうございます。
既に更新日時が90日以前のレコード指定はされていたのですね。
状態が無効以外の条件を追加する場合は、下記で合っていますか?
‘更新日時 < "’ + formatDate(date) + '" and ‘状態’[‘value’] <> “無効”
実環境がないので試せないのですが、↓こんな感じでいけるかと。
const data = await kintone.api('/k/v1/records', 'GET', {app: event.appId, query: '更新日時 < "' + formatDate(date) + '" and 状態 != "無効" limit 100'});
ありがとうございます。
調べてみたらドロップダウンは演算子に使えるものが限られているみたいですね。
not in を使ったらうまくいきました。
ありがとうございました!!