はじめに
この記事は「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」を追加して、レコードを何件か追加しておきます。
レコード番号やステータス、作業者が見やすいレコード一覧を、追加しておくといいでしょう。
ChromeデベロッパーツールのConsole画面
「To Do」アプリのレコード一覧画面で、ChromeでデベロッパーツールのConsole画面を表示します。
「動かない?そんな時はデバッグをしてみよう!入門編」を参考にして、Chromeのデベロッパーツールを表示し、Consoleタブをクリックします。
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);
});
Consoleに表示された{records:の先頭の▶をクリックすると、取得したレコードの内容を展開できます。
ステータスを一括更新する
では、レコード一覧画面で、ステータスを一括更新しましょう。
ステータス更新の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キーで実行しましょう。
実行後、ブラウザの画面を再読み込みして、更新後のレコードを確認します。
ステータスが「作業中」になり、作業者も設定されました!
まとめ
ブラウザのデベロッパーツールのConsoleでREST APIを実行すると、標準機能を超えてレコードを操作できることがあります。
JavaScriptカスタマイズやプラグインなどの拡張機能で対応するかわりに、Consoleを使うことができます。
なお、一括更新で間違えると、元に戻すことができないので、慎重に操作しましょう。