Skip to content

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

Gmail、Drive、日曆、表單

內建服務讓幾行就能動 Google Workspace。第一次呼叫會擴張授權範圍,請只開用得到的服務。每日寄信、日曆寫入都有 配額

寄信:MailApp 與 GmailApp

MailApp.sendEmail(收件人, 主旨, 內文) 最單純。需要抄送、HTML、附件、以目前使用者身分操作收件匣時,用 GmailApp

function sendSummary() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const count = Math.max(sheet.getLastRow() - 1, 0);
  MailApp.sendEmail(
    Session.getActiveUser().getEmail(),
    "今日筆數",
    "工作表共有 " + count + " 列資料。"
  );
}

簡易 onEdit 不能寄信。把這個函式掛在選單,或做成每天一次的可安裝觸發。

雲端硬碟:DriveApp

function exportCopy() {
  const ss = SpreadsheetApp.getActive();
  const folder = DriveApp.getFolderById("資料夾ID");
  DriveApp.getFileById(ss.getId()).makeCopy("備份-" + Date.now(), folder);
}

文件範本填值:DriveApp.getFileById(範本ID).makeCopy(...),再用 DocumentApp.openById 對內文 replaceText("{{姓名}}", 值)。這是很常見的「Sheet → 合約 PDF」流程。

日曆:CalendarApp

function addEventFromRow() {
  const [title, start, end] = SpreadsheetApp.getActiveSheet()
    .getRange("A2:C2")
    .getValues()[0];
  CalendarApp.getDefaultCalendar().createEvent(title, start, end);
}

start / end 必須是 Date。儲存格請設成日期時間格式,再用 getValues() 而不是 getDisplayValues()

表單:FormApp 與 onFormSubmit

把 Google 表單回應連到試算表後,用可安裝的「提交表單時」觸發:

function onFormSubmit(e) {
  const named = e.namedValues; // { "電子郵件": ["ada@example.com"], ... }
  const email = named["電子郵件"][0];
  MailApp.sendEmail(email, "已收到報名", "謝謝,我們會再通知。");
}

e.values 是依欄位順序的陣列;e.namedValues 用題目當鍵,題目一改鍵就變,正式環境常改讀試算表列較穩。

服務參考:GmailDriveCalendarForms