Chapter 14. Google Sheets 擴充功能簡介14.3 Apps Script 簡介

14.3 Apps Script 簡介


Apps Script 是一種 JavaScript 雲端腳本語言用來擴展 Google Apps 以及建立 Web 應用程式。可以做到幾乎所有與 Google Sheets 或其他 Google 服務有關的項目,而且都是免費的。在本節將使用兩個範例介紹如何在 Google Sheets 中使用 Apps Script,至於程式碼的細節並不會做過多的描述,有興趣的同學可以在官方網站進行學習,作者自己也是透過官方文件、ChatGPT / Gemini、網路論壇 Stack Overflow 進行學習。

若要在 Google Sheets 中建立一個 GAS 的專案,可以點選「擴充功能 ⭢ Apps Script」,點選後會進入到 Apps Script 的開發環境,如下圖:

若將程式碼寫完並存檔後,便能點選「執行」開始執行程式,Apps Script 就可以根據程式的要求對資料進行處理,以下將介紹兩個範例說明 Apps Script 是如何運作與執行,其中範例的程式碼都是透過 ChatGPT / Gemini 完成。

  1. 統計工作表「14.1 與其他 Google 工具的串接」的票數

    結果

    Prompt

    幫我用 Apps Script 寫一隻程式,判斷目前 Google Sheets 試算表的「14.1 與其他 Google 工具的串接」工作表的 B2:B 每一個儲存格的值分別出現幾次,幫我將結果輸出至「14.3 Apps Script 簡介」工作表中,其中輸出有兩欄,分別把表頭命為「餐廳」和「票數」。

    程式碼

    function countValuesAndOutput() {
     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var sourceSheet = ss.getSheetByName('14.1 與其他 Google 工具的串接');
     var targetSheet = ss.getSheetByName('14.3 Apps Script 簡介');
      // 清空目標工作表
     targetSheet.clear();
      // 取得原始資料範圍
     var dataRange = sourceSheet.getRange('B2:B');
     var values = dataRange.getValues();
      // 初始化一個物件來存放值與出現次數的對應關係
     var countObject = {};
      // 計算每個值的出現次數
     values.forEach(function(row) {
       var value = row[0];
       if (value !== "") {
         if (countObject[value]) {
           countObject[value]++;
         } else {
           countObject[value] = 1;
         }
       }
     });
      // 將結果輸出至目標工作表
     var outputData = [];
     outputData.push(['餐廳', '票數']);
     for (var key in countObject) {
       outputData.push([key, countObject[key]]);
     }
     targetSheet.getRange(1, 1, outputData.length, outputData[0].length).setValues(outputData);
    }
  2. 將 A. 產出的資料繪製成長條圖,並將圖表標題設為「各餐廳得票數統計」,貼在 C1 儲存格中

    結果

    Prompt

    幫我用 Apps Script 寫一隻程式,將 Google Sheets 試算表的「14.3 Apps Script 簡介」工作表的 A2:B 的資料繪製成長條圖,其中 A 欄是餐廳、B 欄是票數,幫我將圖表的標題設為「各餐廳得票數統計」,完成後把圖表貼在「14.3 Apps Script 簡介」工作表的 C1 儲存格中。

    程式碼

    function createBarChart() {
     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var sheet = ss.getSheetByName('14.3 Apps Script 簡介');
      // 取得 A2:B 範圍的資料
     var dataRange = sheet.getRange('A2:B');
     var data = dataRange.getValues();
      // 創建圖表
     var chart = sheet.newChart()
       .setChartType(Charts.ChartType.BAR)
       .addRange(dataRange)
       .setPosition(1, 3, 0, 0)
       .setOption('title', '各餐廳得票數統計')
       .build();
      // 將圖表插入工作表的 C1 儲存格中
     sheet.insertChart(chart);
    }

在此不會介紹 Apps Script 更深入的用法,因為這是一門需要很多時間與精力學習的語法主要是讓各位同學知道有這樣一套工具可以完成工作中較為複雜的需求。此外,現在也有 ChatGPT / Gemini 等生成式 AI 工具能快速撰寫程式碼並了解背後的語法邏輯,所以在此不用詳盡介紹,若對於使用 Google Sheets / Apps Script 進行自動化與數據分析有興趣的同學,歡迎大家上網找更多資源學習。