醫智匯

sheet-form

sheet-form

怎麼用

打開你的 AI 助手,把下面這句話貼給它。下面那一大段是寫給它看的,你不必讀。

請照平台的 sheet-form 這個 skill 幫我做

適用:使用者說「登記完要進我的試算表」「我都在試算表裡統計」,例如器材借用、衛材請領、意見回報。

資料寫進他自己的 Google 試算表;他照常在試算表裡看、篩選、統計。

什麼時候用這個 skill

  • 他堅持資料要在自己的試算表裡。沒有這個堅持的話,預設用 form-app(平台資料服務):不用分享、不用審核、平台就能匯出 CSV。
  • 只能新增一列:同仁不能在工具上改或刪試算表裡的資料——要改,請負責人在試算表裡改。
  • 要讀回來顯示(例如列出借用中的)一起用:同一張試算表的 read(見 sheet-viewer)。
  • 有工號、排班這類員工資訊=二級:平台要已經開放(/platform/limits 的 sheets.level2_open),而且負責人要先在應用管理頁「試算表」卡申請、簽同意書,

管理員核可後才發佈得了;開放程度只能是「只有名單上的人」。病患資料任何情況都不行。

  • 先看 /platform/limits 的 sheets.enabled:false 就是平台還沒開放串接試算表,照實說並改用 form-app。

做法

  • manifest:skills_used 填 sheet-form;data.collects 照實列出每一欄。
  • 請他給試算表網址與分頁,並在第一列放好欄位標題(最後兩欄的標題寫「填寫人」「填寫時間」,平台會填)。
  • 請他分享給平台,權限選「編輯者」,並講清楚:「平台會替這個工具的使用者在表的最後加一列;讀回來的時候,工具的使用者也看得到這張表。」
  • manifest:

```yaml

sheets:

loans:

url: https://docs.google.com/spreadsheets/d/<ID>/edit

range: 借用登記!A1:E5000

append: all # 或 [nurse, keeper]:只有這些角色能登記

columns: [item, borrower_unit, return_date]

```

  • 程式送出:await UberTeach.sheets.append('loans', { item, borrower_unit, return_date })。不要自己放填寫人姓名或時間的欄位。
  • 發佈試用版:sheets[].write 是 pending 時告訴他「審核員核可之前只有你和代理人能登記,同事會看到『還在等審核』」。

骨架

<!doctype html>
<html lang="zh-Hant">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>器材借用登記</title>
</head>
<body>
  <h1>器材借用登記</h1>
  <p>請勿輸入病人資料。</p>
  <form id="f">
    <label>器材 <input name="item" required maxlength="100"></label>
    <label>借用單位 <input name="borrower_unit" required maxlength="50"></label>
    <label>預計歸還 <input name="return_date" type="date" required></label>
    <button type="submit">登記</button>
  </form>
  <p id="status"></p>
  <script src="https://platform.wanfangai.tw/sdk/v1.js"></script>
  <script>
    document.getElementById('f').addEventListener('submit', async (e) => {
      e.preventDefault();
      const values = Object.fromEntries(new FormData(e.target));
      const status = document.getElementById('status');
      try {
        await UberTeach.sheets.append('loans', values); // 平台會加上填寫人、填寫時間
        e.target.reset();
        status.textContent = '已登記'; // textContent, never innerHTML
      } catch (err) {
        status.textContent = err.message; // 平台回的中文訊息,照樣顯示
      }
    });
    UberTeach.me();
  </script>
</body>
</html>

發佈前檢查

  • 他知道分享成「編輯者」的後果,而且同意;試算表最後兩欄的標題是「填寫人」「填寫時間」。
  • 表單上有「請勿輸入病人資料」;沒有要人輸入工號(一級工具不能收)。
  • 告訴他:登記之後最多一分鐘,工具讀回來就看得到;要改或刪,在試算表裡改。