Skip to content

建立 2026-09-15 更新 2026-09-15

自訂選單與對話方塊

同事不該進編輯器按「執行」。用 onOpen 在試算表頂端加一個選單,把函式變成按鈕。需要確認或輸入時,再用簡單的 alert / prompt

加選單

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu("自動化")
    .addItem("整理本週資料", "tidyThisWeek")
    .addItem("寄出摘要信", "sendSummary")
    .addSeparator()
    .addItem("關於", "showAbout")
    .addToUi();
}

function showAbout() {
  SpreadsheetApp.getUi().alert("這個選單會整理資料並寄摘要。");
}

重新整理試算表後,選單才會出現。onOpen簡易觸發不能寄信;「寄出摘要信」這個選單項目本身是使用者點下去才跑,那時候可以授權,因此可以呼叫 GmailApp

createAddonMenu() 給外掛用,一般繫結腳本用 createMenu(名稱) 即可。

對話:alert、prompt、confirm

function askEmail() {
  const ui = SpreadsheetApp.getUi();
  const result = ui.prompt(
    "寄送到哪個信箱?",
    ui.ButtonSet.OK_CANCEL
  );
  if (result.getSelectedButton() !== ui.Button.OK) return;
  const email = result.getResponseText().trim();
  if (!email) {
    ui.alert("沒有輸入信箱。");
    return;
  }
  MailApp.sendEmail(email, "測試", "來自試算表的測試信");
}

這三種對話是系統視窗,不能自訂 HTML。需要表單、表格、上傳時,改用 HTML Service 做側欄或對話方塊,見 網頁應用HtmlService 觀念(側欄寫法類似,改呼叫 showSidebar)。

指派給圖形按鈕

在試算表插入繪圖或圖片 → 右鍵 → 指派指令碼 → 填函式名稱(不要加 ())。適合給完全不碰選單的使用者,但圖形容易被誤移,正式流程仍建議選單。