LoginSignup
6
4

More than 3 years have passed since last update.

JavaScriptカスタマイズやプラグインを使わないで、kintoneでステータスを一括更新する方法

Last updated at Posted at 2020-12-24

2020-12-25_00h18_26.png

はじめに

この記事は「kintone Advent Calendar 2020」の24日目の記事です。

kintoneのプロセス管理機能を有効にしたアプリで、ステータスを一括更新したいことがあります。
通常のフィールドなら、ファイルの書き出しと読み込みで一括更新できますが、ステータスはファイル読み込みでは更新できません。
複数レコードのステータスを一括で処理する機能は未搭載です。

業務で一括更新が頻繁に必要なら、JavaScriptカスタマイズで一括更新や、プラグインで一括更新することを検討するといいでしょう。

通常は必要がなくても、一時的に必要になった場合はどうしたらいいでしょうか。
プロセス管理の設定を変更したときなど、レコードのステータスをまとめて更新したいことがありえます。
途中でプロセス管理を有効にするとステータスが全て初期」ということもあるでしょう。

また、JavaScriptカスタマイズやプラグインの設定にはkintoneシステム管理権限が必要ですが、その権限がなければ設定できません。

そのような場合は、ブラウザの開発者ツール(以下Chromeデベロッパーツールで説明します)のConsole画面でREST APIを実行すれば、ステータスを一括更新できます。
ConsoleでのREST APIの実行は、kintoneシステム管理権限がない一般ユーザーでも可能です。

ChromeデベロッパーツールのConsole画面で、REST APIを実行する

サンプルアプリを利用して、ChromeデベロッパーツールのConsole画面で、REST APIを実行する方法を確認します。

サンプルアプリ

プロセス管理が設定されているサンプルアプリの「To Do」を追加して、レコードを何件か追加しておきます。
レコード番号やステータス、作業者が見やすいレコード一覧を、追加しておくといいでしょう。
2020-12-24_22h41_38.png

ChromeデベロッパーツールのConsole画面

「To Do」アプリのレコード一覧画面で、ChromeでデベロッパーツールのConsole画面を表示します。
動かない?そんな時はデバッグをしてみよう!入門編」を参考にして、Chromeのデベロッパーツールを表示し、Consoleタブをクリックします。
2020-12-24_23h00_27.png

ConsoleでREST APIを実行する

ブラウザのデベロッパーツールを使って、kintone REST APIのサンプルを簡単に実行してみる!」を参考にして、レコードを取得してみましょう。
レコード一覧画面でレコードを一括取得するので、

  • レコードIDの指定は不要
  • URI /k/v1/record → /k/v1/records

とします。
なお、レコード取得のREST APIについては、「レコードの取得(GET)」を参照してください。

var body = {
  'app': kintone.app.getId()
};

kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, function(resp) {
  // success
  console.log(resp);
}, function(error) {
  // error
  console.log(error);
});

2020-12-24_23h19_47.png

Consoleに表示された{records:の先頭の▶をクリックすると、取得したレコードの内容を展開できます。
2020-12-24_23h23_56.png

ステータスを一括更新する

では、レコード一覧画面で、ステータスを一括更新しましょう。
ステータス更新のREST APIについては、「複数のレコードのステータスを一括更新する」をご覧ください。
上記で実行したコードに、下記の修正をする必要があります。

  • リクエストパラメータの変更
  • URI /k/v1/records → /k/v1/records/status
  • HTTPメソッド GET → PUT

リクエストパラメータを準備する

リクエストパラメータは、「複数のレコードのステータスを一括更新する」の「リクエストパラメータ」に「必須」と記載されている項目を指定します。

  • アプリのID
  • ステータスを更新するレコードの、レコードIDと実行するアクションと作業者の配列

「リクエストの例」の「ボディ」を参考にしてください。
例えば、次のような内容とします。
(実際に試す場合は、レコードIDや、実行するアクション、作業者は、試す環境にあわせて変更してください)

{
    'app': kintone.app.getId(),
    'records': [
        {
            'id': 12,
            'action': '依頼する(担当者を設定後)',
            'assignee': 'nakamura'
        },
        {
            'id': 13,
            'action': '依頼する(担当者を設定後)',
            'assignee': 'nakamura'
        },
        {
            'id': 14,
            'action': '依頼する(担当者を設定後)',
            'assignee': 'nakamura'
        }
    ]
}

多数のレコードを処理する場合は、Excelなどに上記の文字列を貼り付けて、一括で加工すると楽でしょう。
加工したExcelのデータをテキストエディタに貼り付けて、コードを整えましょう。

一括更新する

先ほどのコードを修正します。

  • リクエストパラメータの変更
  • URI /k/v1/records → /k/v1/records/status
  • HTTPメソッド GET → PUT
var body = {
    'app': kintone.app.getId(),
    'records': [
        {
            'id': 12,
            'action': '依頼する(担当者を設定後)',
            'assignee': 'nakamura'
        },
        {
            'id': 13,
            'action': '依頼する(担当者を設定後)',
            'assignee': 'nakamura'
        },
        {
            'id': 14,
            'action': '依頼する(担当者を設定後)',
            'assignee': 'nakamura'
        }
    ]
};

kintone.api(kintone.api.url('/k/v1/records/status', true), 'PUT', body, function(resp) {
  // success
  console.log(resp);
}, function(error) {
  // error
  console.log(error);
});

レコード一覧のConsoleにコードを貼り付けてEnterキーで実行しましょう。
2020-12-25_00h17_16.png

実行後、ブラウザの画面を再読み込みして、更新後のレコードを確認します。
2020-12-25_00h18_26.png

ステータスが「作業中」になり、作業者も設定されました!

まとめ

ブラウザのデベロッパーツールのConsoleでREST APIを実行すると、標準機能を超えてレコードを操作できることがあります。
JavaScriptカスタマイズやプラグインなどの拡張機能で対応するかわりに、Consoleを使うことができます。
なお、一括更新で間違えると、元に戻すことができないので、慎重に操作しましょう。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4