iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
Modern Web

我阿嬤都會的 kintone 客製化開發系列 第 2

Day 02 | kintone JavaScript API & kintone Rest API

  • 分享至 

  • xImage
  •  

前篇文章有提到,在 kintone 可以使用 Javascript 進行客製化開發,在開發期間,最重要的兩個東西就是 kintone JavaScript API 以及 kintone Rest API,這篇文章會針對這兩個東西來做介紹。

官方文件:https://cybozu.dev/zh-tw/kintone/

kintone JavaScript API

官方文件:https://cybozu.dev/zh-tw/kintone/docs/js-api/

kintone JavaScript API 提供了各式各樣的事件及方法,其中包含事件註冊,獲取特定資訊、隱藏欄位、取得 DOM 等等,這些都歸類在 kintone JavaScript API,根據官網的介紹,可以分成以下幾種:

  • 事件
  • 註冊或刪除事件處理程式
  • 執行API
  • 獲取/設定資訊
  • 顯示/隱藏欄位
  • 獲取元素
  • 外掛程式

接著來介紹幾個常用的 API。

事件 / 註冊或刪除事件處理程式

在 kintone 中想要讓某個時機點觸發某個事件,就需要使用到 kintone.events.on 這個功能,這就像在寫 JS 中的 addEventListener 一樣。可以理解為監聽某事件。

例如以 app.record.index.show(顯示清單畫面後)這個事件來說,寫法會像下面這樣:

kintone.events.on('app.record.index.show', (event) => {
  // 事件觸發後要做的事情 ...
})

接著只要觸發 kintone.events.on 之後,就會執行後面的 callback。也就是進到下圖的網頁之後觸發事件:

事件的種類也分很多種,例如顯示某個畫面時觸發、流程管理到某個流程時觸發、儲存成功後觸發...等,可以依照自己想要的時機點來做開發。

獲取/設定資訊

當我們會需要取得使用者的身分、或是需要拿到某個應用程式的 ID,這時候就需要用到 獲取/設定資訊 系列的 API,例如:

  • kintone.app.getId():取得當前應用程式 ID。
  • kintone.app.record.get():取得當前 Record 所有欄位的值。
  • kintone.getLoginUser():取得當前使用者資訊。

顯示/隱藏欄位

開發的時候,如果不想讓某些身分的使用者看到欄位,就可以透過客製化開發的方式將某些欄位隱藏,或者是想要在應用程式做分頁切換的時候,也很適合用到這個功能。

  • kintone.app.record.setFieldShown():顯示或隱藏欄位。
  • kintone.app.record.setGroupFieldOpen():顯示或隱藏群組欄位。

獲取元素

官方文件:https://cybozu.dev/zh-tw/kintone/docs/js-api/#get-element

有時候我們會需要對 kintone 的空白欄位進行客製化,例如把空白欄位變成按鈕等,所以首先要做的事情就是要取得這個 DOM 元素。不過在每個事件底下都有對應各自的 DOM 元素抓取方法,會這樣是因為不是每個頁面都長得一模一樣。

像是獲取選單的右側元素,使用的是 kintone.app.getHeaderMenuSpaceElement();入口網站的上部元素則是 kintone.portal.getContentSpaceElement(),因此在抓元素的時候會先需要看自己在哪個頁面 / 事件,再根據頁面抓 DOM。

kintone REST API

官方文件:https://cybozu.dev/zh-tw/kintone/docs/rest-api/

使用 kintone REST API,根據對應的 HTTP Method,我們可以對資料做增刪改查,包括欄位、紀錄(Record)、清單等等,分類如下:

  • 記錄
  • 檔案
  • 應用程式
  • 空間
  • 外掛程式
  • API資訊

用法就跟我們在前端呼叫 API 一樣,以下是最基本呼叫 API 的用法:

kintone.events.on("app.record.detail.show", () => {
  (async () => {
    try {
      const response = await fetch("/k/v1/records.json?app=77", {
        headers: {
          "X-Requested-With": "XMLHttpRequest",
        },
      });
      const data = await response.json();
      console.log(data);
    } catch (e) {
      // 錯誤處理 ...
    }
  })();
});

通常開發上最常用到的是記錄(Record)系列的 API,我們很常會對每筆資料去做增刪改查,像是對關聯的資料進行更新、觸發某個事件後新增資料到其他 APP 等等。


上一篇
Day 01 | 前言之什麼是 kintone
下一篇
Day 03 | 發送 request 至 kintone 時的身份驗證
系列文
我阿嬤都會的 kintone 客製化開發13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言