使用 google app script 擴增 google docs 功能

筆記說明

此筆記僅記錄大衛如何使用 google docs 中的建立程式碼,來寫成一份外掛程式。
並非所有人都適用,部分對我而言稍加容易的內容並不會寫在此內。
這是學習後心得的筆記,可能不太適用會未來的學生,或是版本更新就不適用

由於我並不是 google app script 大神,可能有些地方沒有寫得很棒,還請多包涵。

Google App Script 是甚麼

  • 是 Google 以 JS 為基底再衍伸出的一種腳本
  • 能專門在 Google Workspace 進行輕量應用開發
    Google Workspace: gmail, drive, Jam….,只要是 google 提供的服務都是 Google Workspace
  • Google App Script 可以在 docs、sheet、slide 建立插件。

主題:Google App Script 連接 Google docs

這次我們要講 Google App Script 應用在 Google docs,大家應該都很清楚,我們有時候再運用 Google docs 上總是會覺得功能不夠多,不夠好用,這時候自己寫一個外掛程式就可以幫助我們,那要怎麼寫呢?

首先,我們必須要學會 JavaScript,這應該對大家都還行。

這裡我們會細分兩部分

  • 再 google docs 加入外掛,供使用者進行使用
  • 使用追縱器,追蹤使用者打開文件
    如果是 google sheet,甚至可以追蹤文件修改。

google docs 加入外掛,供使用者進行使用

  • 這裡我們只是做一個簡單的快速開始,我之前有再工作時應用到,但是這是工作機密因此無法洩漏,
  • 不過有興趣做此應用的讀者可以考慮做做看:蒐集新聞,並放入 google docs 裡面,製作成報刊。
  • 我知道 google 的 example,並不是非常好用,所以我在這邊做一個簡單介紹,方便使用者快速上手。
  • 那我們範例的專案就是讓 google docs 裡面的單字放到 alert 來提醒我們。
  • 提供一個方向給初學者參考,google App Script 都是以 class 為主,因此當我們需要用到 google docs 我們就使用 DocumentApp、使用 google sheet 就用 spreadsheet,一些常用的套件則也有 class。稍微比一般的 js 容易閱讀、使用
  • 首先我們必須先開啟一份 google docs
  • 之後我們點選 工具 > 指令碼編輯器,注意:指令碼編輯器必須要是此文件的編輯者

  • 再來我們進入程式碼編輯區,大家可以自行摸索下
  • 我們可以從 Google Document Class 得知,google Docs 的程式結構類似於 html,因此必須熟讀 Google Document Class 才可以知道程式碼要如何運作。
  • 將此專案進行改名,點此改名,這邊我們改名 跳出 word 內所有單字訊息

這邊我們則直接寫程式,直接作範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function main(){ //主要執行區
//使我們的外掛套件增加一個按鈕,當點擊此按鈕執行 function pathfinder_update_word
var ui = DocumentApp.getUi();
ui.createAddonMenu()
.addItem("print doc word", "print_doc_word")
.addToUi();
}

function print_doc_word(){
var ui = DocumentApp.getUi(); //使用 ui.class
var result = ui.alert("準備將文字進行輸出..."); //送出警示

//告訴 google 你想要用程式操作的 google doc 是正在執行的 google doc
var source = DocumentApp.getActiveDocument();
var body = source.getBody(); //進入 doc body
var get_text = body.getText(); //獲得 body 內的所有文字

var result = ui.alert(get_text);

}

Google App Script 操作

  • 先將資料進行儲存(ctrl+s),之後我們要選擇當程式啟動後,第一個呼叫的程式是哪個,這裡的話則是呼叫 main

  • 寫完後的第一次執行,通常會告訴你需要授權這份專案存取你的資料,那我們一定也會答應的,除非你自己寫的這份程式碼有毒XDDD。
  • 因此點選 審查權限 > 選擇帳戶(必須與 Google App Script 的帳戶相同) > 允許。
  • 執行程式

Google Doc 加入外掛套件

  • Google App Script 操作完成後,點選 外掛程式 > 跳出 word 內所有單字訊息 > update keyword

  • 成果畫面 A

  • 成果畫面 B

讓此外掛永遠存在此文件

  • 有些讀者應該有發現,當我們 refresh google doc 則我們的外掛套件就會消失
  • 如果我們執行過程式,則 google doc 的外掛程式永遠只會是第一次執行的結果,如果先前有做修改,那我們就 refresh google doc,從做上面兩大操作。
  • 那當我們執行好後,應該要如何讓我們寫的程式外掛一直都存在這份文件呢?
  • 請按照此照片的步驟進行點選,中間的主畫面則交給使用者進行微調。

Google App Script 使用其他方式來編輯 google doc

有時候我們一份程式碼並不一定只用在當前的 google docs DocumentApp.getActiveDocument(),如果他有需要用到其他 google doc DocumentApp.openById(id),另一份 google doc 如果想要透過 google doc ID 來編輯、追蹤此文件,則可以查看下行連結
Can I use DocumentApp.openById() with read only permission? by stackoverflow

而 google doc ID 我們要怎麼知道呢?

1
https://docs.google.com/document/d/XXX/edit

其中 XXX 處中的所有文字就是這份文件的 ID。

參考連結

Google Drive Class
Google Document Class
Google Document Interface Element
Can I use DocumentApp.openById() with read only permission? by stackoverflow

心得

Google 的說明文件真的很不好閱讀欸…,給我快速開始拉QQQ。

想當然,Google 的服務自然是非常好用,非常棒,但有些部分還沒有到完全齊全,對使用者來說可以達到百分之百的友善。

如果讀者有好好的去查看他們的說明文件則會發現他們的 method 都沒有給舉例,因此常常會發現,他告訴我有這個函式、這個功能!可是我不知道怎麼用,怎麼寫…。接下來我們再去用 google search 去找如何使用此函數,或是他有沒有一些必備的前置動作之類的,畢竟雲端程式最大的缺點就是 debug 非常不容易…,每次 debug 都跟通靈沒啥不一樣QQ。

但還是謝謝 google 發明這份程式且願意免費讓我來使用QQ,很感謝你們,嗚嗚。
但拜託不要養套殺我拉。

  • 版權聲明: 本部落格所有文章除有特別聲明外,均採用 Apache License 2.0 許可協議。轉載請註明出處!
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: