kintoneを使っているとよく発生する事象です。
アプリ内のレコード数が数千件あるが、この新しくフィールドを追加することになった。
全件条件分岐で内容を入れたいが、ひとつずつやっているといつまでかかるかわからない…。
そんな時は、一括で処理してくれるボタンを実装しちゃいましょう!
(function () {
"use strict";
kintone.events.on('app.record.index.show', function (event) {
if (document.getElementById ('my_index_button') != null) {
return;
}
var myIndexButton = document.createElement('button');
myIndexButton.id = 'my_index_button';
myIndexButton.innerHTML = 'ボタン上の文言';
// ボタンクリック時の処理
myIndexButton.onclick = function() {
var appId = kintone.app.getId();
kintone.api('/k/v1/records', 'GET', {app: appId}, function(resp) {
//////// 更新オブジェクトの生成
var param = {
"app": appId,
"records": []
};
for (var i = 0; i < resp['records'].length; i++) {
var record = {};
// 分岐処理があればここで記載する(今回はすべて同じ内容が入ります)
record["フィールドコード"] = { value: "内容"};
param['records'][i] = {
"id": resp['records'][i]['レコード番号'].value,
record
}
}
kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', param, function(resp) {
// success
console.log(resp);
}, function(error) {
// error
console.log(param);
console.log(error);
});
});
}
kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
});
})();
こんな使い方をしてみよう
年齢を最新にする
kintoneではレコードを開いたときに処理が走るため、計算フィールドを使って年齢計算している場合やedit.showイベントで年齢計算している場合は、レコードを開かない限り何年も同じ年齢になってしまいます。
上記のコードを少し弄ると、年齢を一括更新するコードを書くことができます。
(function () {
"use strict";
kintone.events.on('app.record.index.show', function (event) {
if (document.getElementById ('my_index_button') != null) {
return;
}
var myIndexButton = document.createElement('button');
myIndexButton.id = 'my_index_button';
myIndexButton.innerHTML = '年齢一括更新';
// ボタンクリック時の処理
myIndexButton.onclick = function() {
var appId = kintone.app.getId();
kintone.api('/k/v1/records', 'GET', {app: appId}, function(resp) {
//////// 更新オブジェクトの生成
var param = {
"app": appId,
"records": []
};
for (var i = 0; i < resp['records'].length; i++) {
var record = {};
// 日付データを取得
var today = new Date();
var birthday = new Date(resp['records'][i]['生年月日'].value);
record["年齢"] = { value: calcAge(birthday,today)};
param['records'][i] = {
"id": resp['records'][i]['レコード番号'].value,
record
}
}
kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', param, function(resp) {
// success
console.log(resp);
}, function(error) {
// error
console.log(param);
console.log(error);
});
});
}
kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
});
function calcAge(birthdate, targetdate) {
var age = targetdate.getFullYear() - birthdate.getFullYear();
var birthday = new Date(targetdate.getFullYear(), birthdate.getMonth(), birthdate.getDate());
if (targetdate < birthday) {
age--;
}
return age;
}
})();
-
-
kintoneで見やすいのカンバン形式を無料で導入する方法
kintoneでカンバン形式のタスク管理を使う場合、有料のプラグインを使うか、無料の場合はjava scriptでコード ...
-
-
Kintoneはプラグインでこんなに良くなる!Kintoneのオススメプラグイン
ノンコーディングでアプリが作成できるフレームワーク「Kintone」。しかし、細かいカスタマイズをしようとすると、どうし ...
-
-
Kintoneで郵便番号から住所を検索する方法
過去に同様の記事を書きましたが、2020年6月でAPIの提供が終了してしまいました。 新たにzipcloudが郵便番号検 ...
-
-
WordPressの問い合わせフォームContact Form 7とkintoneを連携する方法
WordPressでHPを作成している場合、プラグインの Contact Form 7 で問い合わせフォームを作成してい ...
-
-
【kintone】ボタンクリックで別アプリの編集画面に値をコピーした状態で開く方法
タイトルだけ見ると何を言ってるか分かりませんよね…^^; Aアプリのスペースに設定したボタンからBアプリの編集画面を立ち ...
-
-
【kintone】JavaScriptを使って郵便番号から住所を作成する(コピペでOK)
kintoneの顧客管理アプリを作ってる中で、ふとこんなことを思ったのがきっかけ。 kotopapa住所入力面倒だなぁ… ...
-
-
JavaScriptを使ってkintoneの一覧画面上に全レコードを対象とした一括処理ボタンを実装したい
kintoneを使っているとよく発生する事象です。 アプリ内のレコード数が数千件あるが、この新しくフィールドを追加するこ ...
-
-
kintoneのJava Scriptで非同期処理の完了を待つ方法
kintoneのjava scriptで機能拡張していると、便利なはずの非同期処理がかえって困るケースがあります。 例え ...
-
-
kintoneでJava Scriptを使ってサブテーブルを初期化する方法
kintoneで別アプリのレコード情報をサブテーブルにまとめて取得する場合、まずはサブテーブルを初期化…。 あれ?サブテ ...
-
-
kintoneでJava Scriptを使ってダイアログ(確認ポップアップ)を表示する
kintoneの保存前に保存チェックをしたり、保存キャンセルをしたり、ダイアログを表示することで処理の切り替えをすること ...