あなたのビジネスと共に歩むサイト

with-Biz

JavaScriptを使ってkintoneの一覧画面上に全レコードを対象とした一括処理ボタンを実装したい

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の保存前に保存チェックをしたり、保存キャンセルをしたり、ダイアログを表示することで処理の切り替えをすること ...