自訂選單與對話方塊
同事不該進編輯器按「執行」。用 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)。
指派給圖形按鈕
在試算表插入繪圖或圖片 → 右鍵 → 指派指令碼 → 填函式名稱(不要加 ())。適合給完全不碰選單的使用者,但圖形容易被誤移,正式流程仍建議選單。