擴充 Google 試算表

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

大多數專為 Google 試算表設計的指令碼會操控陣列,以便與試算表中的儲存格、列和欄互動。如果您還不熟悉 JavaScript 中的陣列,Codecademy 提供了陣列的完美訓練模組。(請注意,本課程並非由 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 試算表在發生特定事件時自動執行函式。可安裝的觸發條件比簡單的觸發條件更具彈性,並支援下列事件:開啟、編輯、變更、表單提交,以及時間驅動 (時鐘)。