擴充 Google 試算表

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

Google Apps Script 可讓你在 Google 試算表中處理各種新潮的新奇操作。您可以使用 Apps Script 在 Google 試算表中新增自訂選單對話方塊和側欄。它還可讓您撰寫試算表的自訂函式,並將試算表與其他 Google 服務整合,例如日曆、雲端硬碟和 Gmail。

大多數專為 Google 試算表設計的指令碼會操控陣列,以便與試算表中的儲存格、列和欄互動。如果您不熟悉 JavaScript 中的陣列,程式碼研究室提供陣列的完美訓練模組。請注意,本課程並非由 Google 開發,也與 Google 無關。

如要快速搭配使用 Apps Script 和 Google 試算表,請參閱 5 分鐘的巨集、選單和自訂函式快速入門指南。

開始使用

Apps Script 內含特殊的 API,可讓您透過程式建立、讀取及編輯 Google 試算表。Apps Script 能夠與 Google 試算表進行互動。大致情況如下:當指令碼的使用者俱備試算表的適當權限時,指令碼就能建立或修改試算表,而指令碼也可以繫結到試算表,讓指令碼具備在使用者介面開啟時變更使用者介面或回應的特殊功能。如要建立繫結的指令碼,請在 Google 試算表中選取 [Extensions] > [Apps Script]

試算表服務會將 Google 試算表視為格線,並透過二維陣列運作。如要從試算表擷取資料,您必須存取儲存資料的試算表,然後存取存放資料的試算表範圍,再取得儲存格值。Apps Script 會在試算表中讀取結構化資料,並為其建立 JavaScript 物件,方便您存取資料。

讀取資料

假設您有一份產品名稱和產品編號儲存在試算表中,如下圖所示。

以下範例說明如何擷取及記錄產品名稱和產品編號。

function logProductInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {
    Logger.log('Product name: ' + data[i][0]);
    Logger.log('Product number: ' + data[i][1]);
  }
}

查看記錄檔

如要查看已記錄的資料,請按一下指令碼編輯器頂端的 [Execution log] (執行記錄)

寫入資料

如要在試算表中儲存新的產品名稱和數字等資料,請在指令碼結尾新增下列程式碼。

function addProduct() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}

上述程式碼會在試算表底部附加新值,並指定值。如果您執行這個函式,試算表會新增一列。

自訂選單和使用者介面

你可以新增自訂選單、對話方塊和側欄,藉此自訂 Google 試算表。如要瞭解建立選單的基本概念,請參閱選單指南。如要瞭解如何自訂對話方塊的內容,請參閱 HTML 服務指南

您也可以將指令碼函式附加至試算表中的圖片或繪圖;系統會在使用者點按圖片或繪圖時執行此函式。詳情請參閱 Google 試算表中的圖片和繪圖

如果您打算在外掛程式中發布自訂介面,請按照樣式指南的說明,在 Google 試算表編輯器的樣式和版面配置上保持一致。

連結至 Google 表單

Apps Script 可讓您透過表單試算表服務將 Google 表單連結至 Google 試算表。這項功能可以根據試算表中的資料自動建立 Google 表單,此外,Apps Script 也可讓您使用觸發條件 (例如 onFormSubmit) 在使用者回應表單後執行特定動作。如要進一步瞭解如何將 Google 試算表連結至 Google 表單,請觀看 5 分鐘的管理 Google 表單回應一節。

格式設定

Range 類別具有 setBackground(color) 等方法,用於存取及修改儲存格或儲存格格式。以下範例說明如何設定範圍的字型樣式:

function formatMySpreadsheet() {
  // Set the font style of the cells in the range of B2:C2 to be italic.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange('B2:C2');
  cell.setFontStyle('italic');
}

資料驗證

Apps Script 可讓您在 Google 試算表中存取現有資料驗證規則,或是建立新規則。舉例來說,以下範例說明如何設定資料驗證規則,僅允許儲存格中的數字介於 1 至 100 之間。

function validateMySpreadsheet() {
  // Set a rule for the cell B4 to be a number between 1 and 100.
  var cell = SpreadsheetApp.getActive().getRange('B4');
  var rule = SpreadsheetApp.newDataValidation()
     .requireNumberBetween(1, 100)
     .setAllowInvalid(false)
     .setHelpText('Number must be between 1 and 100.')
     .build();
  cell.setDataValidation(rule);
}

如要進一步瞭解如何使用資料驗證規則,請參閱 SpreadsheetApp.newDataValidation()DataValidationBuilderRange.setDataValidation(rule) 的說明

圖表

Apps Script 可讓您在試算表中嵌入圖表,代表特定範圍中的資料。以下範例會產生嵌入長條圖,假設您在 A1:B15 儲存格中有圖表資料:

function newChart() {
  // Generate a chart representing the data in the range of A1:B15.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.BAR)
     .addRange(sheet.getRange('A1:B15'))
     .setPosition(5, 5, 0, 0)
     .build();

  sheet.insertChart(chart);
}

如要進一步瞭解如何將圖表嵌入試算表,請參閱 EmbeddedChart 和特定圖表建構工具,例如 EmbeddedPieChartBuilder

Google 試算表的自訂函式

自訂函式與內建的試算表函式類似,例如 =SUM(A1:A5),除非您使用 Apps Script 定義函式的行為。舉例來說,您可以建立 in2mm() 的自訂函式,將值從英寸轉換為毫米,然後在儲存格中輸入 =in2mm(A1)=in2mm(10) 來使用公式。

如要進一步瞭解自訂函式,請參閱「選單和自訂函式」5 分鐘的快速入門導覽課程,或參閱更詳細的自訂函式指南

巨集

巨集是透過 Google 試算表 UI 執行 Apps Script 程式碼的另一種方式。與自訂函式不同,您可以使用鍵盤快速鍵或透過 Google 試算表選單啟用函式。詳情請參閱「Google 試算表巨集」。

Google 試算表外掛程式

外掛程式是一種專門封裝的 Apps Script 專案,可在 Google 試算表中執行,可從 Google 試算表外掛程式商店安裝。如果你開發了 Google 試算表的指令碼,以便與全世界共用,Apps Script 可讓你以外掛程式的形式發布指令碼,讓其他使用者從外掛程式商店安裝。

觸發條件

繫結至 Google 試算表檔案的指令碼可以使用 簡單觸發條件 (例如 onOpen()onEdit() 函式) 回應,前提是擁有試算表編輯權限的使用者可以開啟或編輯試算表。

和簡單的觸發條件一樣,可安裝的觸發條件可讓 Google 試算表在發生特定事件時自動執行函式。不過,可安裝的觸發條件提供比簡易觸發條件更高的彈性,並支援下列事件:開啟、編輯、變更、表單提交,以及時間驅動 (時鐘)。