初めまして、和田です。
2021年になり、新規APIが追加されました。
今回はアップデートで追加されたAPIの紹介と、こういうときに使えるよ!という内容を書いてみます。
新規APIの実装!
アップデートで新規APIが3件追加されました。
(2021/01/10の定期メンテナンスにおける API 更新情報)
・「アプリの条件通知」の設定を取得、更新できる API を追加
・「レコードの条件通知」の設定を取得、更新できる API を追加
・「リマインダーの条件通知」の設定を取得、更新できる API を追加
※このAPIは対象アプリの「アプリ管理権限」が必要となります。実行ユーザーの権限設定には注意しましょう。
では、APIを利用して、アプリの条件通知設定の取得と更新をやってみます。
担当者を変更してみる
今回は、アプリID、変更前と変更後のユーザーを指定できるアプリを作って、
kintoneアプリ上からボタンを押すだけで更新ができるサンプルをご紹介します!
下の画像のような変更をやってみます。
まずはアプリとボタンを作成
更新するアプリID
対象となるユーザー
変更後のユーザー
を入力できるフィールドを用意したアプリを作成します。
詳細画面にボタンを作成します。
ボタンのonclickイベントに処理を追加していきます。
ボタンの作り方はこちらを参考にしてください → レコード詳細にもボタンを設置しよう!
条件通知設定を取得・更新
アプリIDを使って、新規追加されたAPIでアプリの条件通知設定を取得します。
取得したnotificationsをそのまま使用し、該当ユーザーが設定されている箇所のみを変更して更新APIを叩きます。
実際に動かしてみるソースはこちらです。
(function () { 'use strict'; kintone.events.on('app.record.detail.show', function (event) { // ボタンを用意 var noticeSetUpdateButton = document.createElement('button'); noticeSetUpdateButton.className = 'kintoneplugin-button-normal'; noticeSetUpdateButton.innerText = 'アプリ条件通知更新'; // クリックイベント noticeSetUpdateButton.onclick = function () { var flg = false; var path = '/k/v1/preview/app/notifications/general'; var APP_ID = event.record['対象アプリID'].value; //条件通知設定を取得 return kintone.api(kintone.api.url(path, true), 'GET', { 'app': APP_ID }).then(function (resp) { //オブジェクトをディープコピー var param = JSON.parse(JSON.stringify(resp)); //更新対象のアプリIDを追加 param.app = APP_ID; param.notifications = param.notifications.map(function (notification) { //前担当者が存在したら新担当者に変更する if (notification.entity.code === event.record['前担当者'].value[0].code) { flg = true; //今回はユーザーに更新するため、'USER'固定にしています。 notification.entity = { 'type': 'USER', 'code': event.record['新担当者'].value[0].code }; } return notification; }); //対象があれば更新処理を実行 return (flg) ? kintone.api(kintone.api.url(path, true), 'PUT', param) : Promise.resolve(null); }).then(function(resp) { if (resp) { alert('更新が完了しました。'); } else { alert('更新対象がありませんでした'); } }).catch(function (err) { alert('条件通知設定更新処理に失敗しました。'); }); } kintone.app.record.getHeaderMenuSpaceElement().appendChild(noticeSetUpdateButton); return event; }); })();
※今回はアプリの更新のみで、「アプリの設定の運用環境への反映」は行っておりません。
反映するのであれば、この後に処理を追加してください。
動作させてみる
アプリID「84」のアプリの条件通知は井上課長になっているので、「加藤 次郎」に変更します。
用意したレコードの詳細画面から、ボタンを押して更新処理を実行してみます。
ボタンの動作、メッセージの表示は問題ありませんでした。
では、更新したアプリの条件通知設定を確認してみましょう!
問題なく変更することができました!
気をつけること
アプリの条件通知設定の仕様から、1人のユーザーに対して、設定は1つまでとなっているので、新担当者がユーザーの条件通知設定に既に存在しているとエラーが発生しますのでご注意ください。
関連記事
アプリ一覧に「レコードの最終更新日」列を追加【2021年1月アップデート機能】
kintone REST API レコード一括取得(/k/v1/records.json)のoffset上限が10,000に制限されてもなんとかしてみる(既存処理にも対応)
kintone REST APIの同時接続数に関するパラメータの利用を考える