1. Google Apps Script 簡介
在本程式碼研究室中,我們將介紹最簡單的程式碼編寫方式,讓您存取 Google 開發人員技術。這一切都是透過主流網頁開發語言 JavaScript 完成。您可以使用 Google Apps Script 編寫程式碼,從 Google 試算表儲存格擷取街道地址、根據該地址產生 Google 地圖,然後透過 Gmail 將地圖附加在電子郵件中傳送。最棒的是,只需要四行程式碼。
課程內容
- 如何將 Google Apps Script 與各種 Google 服務搭配使用,例如 Google 試算表、Google 地圖和 Gmail。
- 使用瀏覽器內建的 Apps Script 編輯器開發程式碼。
軟硬體需求
- 可連上網際網路的網路瀏覽器
- Google 帳戶 (Google Workspace 帳戶可能需要管理員核准)
- 熟悉 Google 試算表的基本概念
- 可讀取試算表 A1 標記
2. 問卷調查
您會如何使用這個程式碼研究室/教學課程?
您對 Google Workspace 開發人員工具和 API 的體驗滿意嗎?
3. 總覽
現在您已瞭解本程式碼研究室的主題,接下來要具體做些什麼呢?
- 概略瞭解以 JavaScript 為基礎的 Apps Script。
- 建立 Google 試算表。
- 在試算表左上方的儲存格 (A1) 中輸入街道地址。
- 瞭解如何開啟任何文件的 Apps Script 編輯器。
- 編輯、儲存及執行 Apps Script 程式碼。
- 使用 Gmail 查看結果。
讓我們開始吧!
什麼是 Google Apps Script?
Google Apps Script 是一個開發平台,可讓您輕鬆快速地建立與 Google Workspace 整合的指令碼和小型應用程式。Apps Script 能讓您:
- 以 JavaScript 編寫程式碼,並存取 Gmail、日曆、雲端硬碟等 Google Workspace 應用程式的內建程式庫。
- 不必安裝任何軟體,我們會在瀏覽器中提供程式碼編輯器,而指令碼會在 Google 的伺服器上執行。
- 不必擔心安全性與資料存取權限等複雜主題,因為平台會為您處理。
您可以使用 Apps Script 建立各種應用程式,從聊天機器人到網頁應用程式皆可。最常見的用途之一是擴充 Google 試算表的功能。在本程式碼研究室的其餘部分,您將瞭解如何使用 Apps Script 從試算表擷取資料,並連結至其他 Google 服務。
4. 建立 Google 試算表並輸入街道地址
按照下列操作說明,在新的 Google 試算表中輸入有效的街道地址:
- 使用這個便利連結 (sheets.google.com/create) 建立 Google 試算表。或者,前往 Google 雲端硬碟 (drive.google.com),然後依序點按「新增」>「Google 試算表」>「空白試算表」。

- 在空白試算表中,前往左上角的第一個儲存格 (A1)。應位於 A 欄第 1 列。如需複習,請參閱這篇文章,瞭解 A1 標記。
- 在儲存格中輸入有效的街道地址。使用街道地址、郵遞區號,或城市和州/省的組合,選擇世界上的某個地址,並指定確切位置。以下是紐約市的地址範例:

這樣便完成了需要在 Google 試算表執行的所有操作,現在,我們就開啟編輯器,開始動手寫程式吧。
5. 編輯 Apps Script 程式碼
現在您已建立新的 Google 試算表,可以開始編輯其繫結指令碼。請按照以下步驟操作:
開啟指令碼編輯器
在選單列中,依序選取「擴充功能」>「Apps Script」,開啟 Apps Script 的瀏覽器程式碼編輯器。
在新瀏覽器分頁中,程式碼編輯器會顯示工作表的預設容器繫結指令碼。系統會自動建立名為 myFunction() 的預設函式,並將游標放在函式內,方便您開始作業。
透過電子郵件傳送地址的 Google 地圖
您取得的「範本」程式碼是空白的,因此請將其替換為我們的應用程式。
- 在指令碼編輯器中,將預設的
myFunction()程式碼區塊替換為下列程式碼:
/** @OnlyCurrentDoc */
function sendMap() {
var sheet = SpreadsheetApp.getActiveSheet();
var address = sheet.getRange('A1').getValue();
var map = Maps.newStaticMap().addMarker(address);
GmailApp.sendEmail('YOUR_EMAIL_ADDR', 'Map', 'See below.', {attachments:[map]});
}
- 將預留位置電子郵件地址 (
'YOUR_EMAIL_ADDR') 替換為有效地址。例如 friend@example.com。 - 如要儲存指令碼,請按一下「儲存」圖示
。
- 如要重新命名 Apps Script 專案,請按一下「未命名的專案」,輸入專案標題,然後按一下「重新命名」。
審查程式碼
讓我們來看看構成整個應用程式的 sendMap() 函式,其中包含 4 行程式碼。有趣的是,程式碼參照了 3 種不同的 Google 產品。
第一行是會影響授權的註解註解:
/** @OnlyCurrentDoc */
大多數指令碼都會先要求使用者授予權限,才能執行。這些權限會控管使用者允許指令碼執行的動作。第一行是註解,其中包含選用註解,指示 Apps Script 限制存取目前試算表 (而非所有使用者的試算表)。如果您只處理單一檔案,建議一律加入這項註解。
程式碼會使用 sendMap() 的一般 JavaScript 函式宣告:
function sendMap() {
下一行會呼叫 Apps Script 的 SpreadsheetApp 物件,以存取試算表服務。傳回的工作表會指派給同名的變數。getActiveSheet() 方法會取得目前工作表物件的參照,並將其儲存在 sheet 變數中。
var sheet = SpreadsheetApp.getActiveSheet();
使用 sheet 物件,透過 getRange() 參照以 A1 標記的儲存格範圍 (單一儲存格)。「範圍」是一組儲存格,包括我們輸入地址的儲存格 A1。如要擷取範圍「內」的內容,getValue() 方法會傳回範圍中左上角儲存格的值,並將該值指派給變數 address。你也可以嘗試新增更多地址,並從不同儲存格讀取資料。
var address = sheet.getRange('A1').getValue();
第三行程式碼會使用 Maps 物件連線至 Google 地圖服務。newStaticMap() 會建立靜態地圖物件,而 addMarker() 方法會使用工作表中的地址,在地圖上新增「圖釘」。
var map = Maps.newStaticMap().addMarker(address);
最後,Gmail 服務會透過 MailApp 物件呼叫 sendEmail() 方法,傳送電子郵件,其中包含「See below.」文字和做為附件的地圖圖片。
GmailApp.sendEmail('friend@example.com', 'Map', 'See below.', {attachments:[map]});
}
6. 執行 Google 試算表、地圖和 Gmail 應用程式
命名並儲存後,即可執行函式。在編輯器頂端,確認已從函式清單中選取 sendMap(),然後按一下「執行」。
開發人員很喜歡 Apps Script 的一項功能,就是不必編寫授權碼,就能授予程式存取使用者資料的權限。雖然 Apps Script 會管理這項作業,但應用程式使用者仍須授予指令碼存取試算表的權限,並允許指令碼代表他們透過 Gmail 傳送電子郵件。第一個授權對話方塊如下所示:

按一下「查看權限」繼續操作。
接著,系統會顯示 OAuth2 對話方塊,要求存取試算表及代您傳送電子郵件的權限:

授予權限後,指令碼會自動完成執行。
檢查您傳送訊息的電子郵件帳戶,您應該會看到主旨為「Map」的電子郵件,內文如下:

開啟電子郵件中的附件時,您應該會看到 Google 地圖,並在您輸入到試算表的地址上顯示圖釘:

您只用了四行程式碼,就以有意義的方式存取了 3 種不同的 Google 產品。
7. 其他資源
本程式碼研究室的程式碼也會放在 GitHub 存放區 (github.com/googleworkspace/apps-script-intro-codelab),您也可以參考下方的額外資源,深入瞭解本程式碼研究室涵蓋的內容,並探索其他透過程式存取 Google 開發人員工具的方法。
說明文件
影片
最新消息與更新
- Google Workspace 開發人員網誌
- Twitter:Google Workspace 開發人員 (@workspacedevs)
其他程式碼研究室
入門
- [Google 試算表] Google 試算表 Apps Script 基礎知識
- [REST API] 使用 Google Workspace 和 Google API 存取 Google 雲端硬碟中的檔案和資料夾
中級
- [Apps Script] Gmail 適用的 Google Workspace 外掛程式
- [Apps Script] Hangouts Chat 的自訂機器人
- [REST API] 使用 Google 試算表做為應用程式的報表工具
- [REST API] 使用 BigQuery API 產生 Google 簡報