アプリ管理者用メモAPIを使ってみた【2024年5月アップデート情報】

どうも。BBです。
今回は今年5月のアップデートで新しく搭載された「アプリ管理者用メモが扱えるAPI」を使って、いろいろ 遊んで 開発してみました。
2024年5月版 主なアップデート

標準機能のアップデート紹介はこちらのブログを!

弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。

   kintoneのアプリ開発はこちら <相談無料>    

まずは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での打ち合わせも可能です。

   kintoneのアプリ開発はこちら <相談無料>    

同じカテゴリーの記事