どうも。BBです。
今回は今年5月のアップデートで新しく搭載された「アプリ管理者用メモが扱えるAPI」を使って、いろいろ 遊んで 開発してみました。
2024年5月版 主なアップデート
標準機能のアップデート紹介はこちらのブログを!
弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。
まずはAPIの説明から
GETとPUTのみなので非常にシンプルです。
アプリ管理者用メモを取得する
その名の通り、アプリ管理者用メモに登録された内容を取得することができるAPIです。複数アプリへの対応はないので、1アプリずつの対応になります。
こんな感じのJSプログラムを書いてみると、、
kintone.api(kintone.api.url('/k/v1/app/adminNotes.json', true), "GET", { app: APP_ID }).then(resp => console.log(resp)).catch(err => console.error(err));
このようなレスポンスが返ってきました!
(本文はHTMLで返ってくるのか・・リッチエディタと一緒だな・・)
アプリ管理者用メモを変更する
続いて、変更APIです。こちらもシンプルに1アプリに対してアプリ管理者用メモを更新することができるAPIです。
kintone.api(kintone.api.url('/k/v1/preview/app/adminNotes.json', true), "PUT", { app: 541, content: "この文章で更新してみたよ" }).then(resp => console.log(resp)).catch(err => console.error(err));
メモが更新されました!
※ 注意点として、更新時のURLは /k/v1/preview となり、このAPIだけではアプリへの本番反映はされません。別途アプリの更新を行う必要があります。
と、ここまでは公式ドキュメントにもある説明です。
ここから、これらのAPIを使ってちょっとしたシナリオでプチ開発をしてみました。
「アプリ管理者用メモ管理アプリ」を作ってみた
このAPIが本番搭載されると聞いて、最初に思ったのは「このAPI、どうやって使おうかな・・」でした。
アプリ管理者用メモ自体あまり使っていないのもあり、利用イメージが薄い中ですぐに思いついたのは、
「メモか、、メモならアプリで管理だな、、ってことはアプリからメモ内容をGET/PUTできたらいいな、、」
でした。ということでできたアプリが「アプリ管理者用メモ管理アプリ」。(噛まずに言えたら100点!)
処理としてはこんな感じ!(無駄にアプリ名も取得してみた)
- レコード詳細画面に【取得】【更新】ボタンを表示
- 【取得】ボタン押下時
- レコードの【アプリID】を取得
- アプリIDを元に、アプリ情報の取得(← アプリ名を取得)
- アプリIDを元に、アプリ管理者用メモの取得
- 取得したアプリ名、メモをレコードに保存
- 【更新】ボタン押下時
- レコードの【アプリID】【メモ内容】を取得
- アプリIDを元に、アプリ管理者用メモを更新
とりあえず取得から。
取得してやったぜ!
コードはこんな感じ。
$button.onclick = async () => { try { const rec = kintone.app.record.get(); const appId = rec.record["アプリID"].value; const appInfo = await client.app.getApp({ id: appId }); const appMemo = await kintone.api(kintone.api.url("/k/v1/app/adminNotes.json", true), "GET", { app: appId, }); const resp = await client.record.updateRecord({ app: kintone.app.getId(), id: kintone.app.record.getId(), record: { アプリ名: { value: appInfo.name, }, アプリ管理者用メモ: { value: appMemo.content, }, }, }); console.log(resp); location.reload(); } catch (err) { console.error(err); } };
続いて更新。
$button.onclick = async () => { try { const rec = kintone.app.record.get(); const appId = rec.record["アプリID"].value; const appMemo = rec.record["アプリ管理者用メモ"].value; const resp = await kintone.api(kintone.api.url("/k/v1/preview/app/adminNotes.json", true), "PUT", { app: appId, content: appMemo, }); console.log(resp); } catch (err) { console.error(err); } };
メモ内容を管理するフィールドをリッチエディタにしておくことで、書式もそのまま取得・更新できました!
HTMLで取得できても正直困るなーと思ったけど、こういうときに便利なリッチエディタさん。
おわりに
アプリ管理者用メモが管理できるAPIの1つの使い方として、今回のアプリで管理は意外とアリなんじゃないでしょうか?こうやってAPIがどんどん搭載してくれると、色々と利活用の幅が広がるので嬉しいですね!
また新しいAPIが搭載されたら遊んでみたいと思います!
※ APIの詳細が知りたい方は公式APIドキュメント developer network をご確認ください。
余談
上のネタではアプリ1つずつの取得/更新のみでしたが、実は最初に複数アプリへの一括取得/更新も作ってみてました。
ただ、
- apps.jsonによるアプリ情報の取得は最大100件。再帰処理が必要
- adminNotes.jsonは1件対応のみ。ループ処理が必要
- ループ処理を直列にすると処理時間が長い
- 並列にすると同時アクセス数100を気にしないといけない
って感じで本編と関係ない部分のめんどくささがあり、ここでの説明コストが意外と高いという・・
(あとrest-api-clientにadminNotes.jsonはまだない)
ということで本編ではシンプルに説明できる1アプリずつの操作にしてます!
こういったカスタマイズの相談もウェルカムですので、「こういうことkintoneでやりたいな」と思った方はお気軽にお問い合わせください!
弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。