跳轉到內容

使用 Google Apps Script 開發 Web 應用程式/從電子表格獲取資料

來自華夏公益教科書

結構概述

[編輯 | 編輯原始碼]

Google Apps Script 允許您訪問 Google 表格。您可以先建立與 Google Drive 表格的連線。有兩種方法可以做到這一點

  • ss = SpreadsheetApp.openById(id) 其中“id”是典型的 Google Drive ID(通常在表格 URL 的“https://docs.google.com/spreadsheets/d/”之後的一長串字元)。
  • ss = SpreadsheetApp.getActive() 如果您的指令碼與電子表格繫結(見下文)

獲得電子表格變數(在這些示例中為 ss)後,您可以訪問該文件中的各個工作表(有些人稱之為選項卡)以及它們內部的任何資料。

與電子表格繫結的指令碼

[編輯 | 編輯原始碼]

如果您願意,可以將您的指令碼繫結到電子表格。然後,該指令碼不會作為獨立的 Google Drive 檔案存在,而是儲存在 Google 表格中。您可以透過轉到工具 -> 指令碼編輯器來訪問該指令碼。它看起來就像任何其他指令碼。奇怪的是,它仍然需要一個名稱,但是當您嘗試執行某些內容時,它會提示您命名它。

如果您將其連線到電子表格,您肯定想使用上面提到的第二種方法。上面。有趣的是,第一種方法始終有效。當您將其繫結到電子表格時,訪問控制有一些細微差別。我個人經常這樣做,因為如果我想編輯指令碼,通常也希望同時訪問資料。這樣,它們都儲存在一起。

從電子表格讀取資料

[編輯 | 編輯原始碼]

如果您擁有電子表格變數,假設您想要獲取名為“Sheet1”的工作表中的所有資料,這是全新 Google 表格文件中第一個工作表的預設名稱。您可以像這樣操作

var sheet = ss.getSheetByName("Sheet1");
var data = sheet.getDataRange().getValues();
// then do something with the data

這通常需要一兩秒鐘,即使對於大型(500 多行)電子表格也是如此。獲得資料後,您可以執行各種操作。假設您的電子表格如下所示

姓名 電子郵件 年齡
Andy andy@myschool.edu 48
Ash ash@myschool.edu 20
Char char@myschool.edu 18

假設它位於“Sheet1”中,您可以增強上面的程式碼以建立要顯示在 main.html 頁面上的 HTML 列表,如下所示

data.shift(); // this gets rid of the top row (the one with the headers in it)
var html = "<ul>";
html += data.map(r=>`<li>${r[0]} (${r[1]}) is ${r[2]} years old`).join('');
html += "</ul>";
t.html=html
華夏公益教科書