使用 Google App Script 來輸入文字,並加入打字特效

筆記說明

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

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

使用 google app script 來輸入文字,並加入打字特效

其主要是這樣的,如果讀者之前有用過

1
2
3
4
5
6
var source = DocumentApp.getActiveDocument(); 
var body = source.getBody(); //進入 doc body
var printer = body.editAsText(); //啟動編輯模式
printer.appendText(text[i]); //輸入文字
source.saveAndClose(); //google App Script 可以不用寫這行,那預設會到整份程式碼執行完畢才關閉
//關閉程式碼,將 printer 中的所有文字輸出到 word 上

可以發現,其實 printer 只是一個 buffer,他會等到 source.saveAndClose(); 執行 or 整份程式碼結束時才會更新 word,但如果我們需要先送出資料讓使用者輸入後我們再進行下一步動作,或是打字特效時就很不方便。

因此,如果要先將存在 buffer 裡面的字串都先輸出,我們就必須要先 source.saveAndClose();,之後就可以將所有字串先輸出到 google docs 上。

再來我們可以透過程式在做下一步。

Google App Script 程式碼

一樣我們是先進入 google doc 後,我們點擊 工具 > 指令碼編輯器,之後來寫 code 啦。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function main() {
//告訴 google 你想要用程式操作的 google doc 是正在執行的 google doc
var source = DocumentApp.getActiveDocument();
var body = source.getBody(); //進入 doc body
body.clear(); //將 google doc 裡面全部的資料清除
source.saveAndClose(); //保存,並關閉程式碼對 google doc 的控制

var text = "Hi David, My name is Alice."; //要進行打字特效的動作
for(var i = 0; i < text.length; i++){
var source = DocumentApp.getActiveDocument();
var body = source.getBody(); //進入 doc body
var printer = body.editAsText(); //進入編輯模式
printer.setFontFamily("微軟正黑體"); //設定字體為 微軟正黑體
printer.setFontSize(14); //設定字體大小為 14
printer.appendText(text[i]); //將字串讀入 google doc 內
source.saveAndClose(); //保存,並關閉程式碼對 google doc 的控制,此時則會將 printer butter text 輸出。
Utilities.sleep(200); //暫停,等待 200ms。
}
}

如果檢查沒有問題後,再來我們就是打開觸發條件,如下

但其實可以發現,這樣其實對 google 很壞,很吃他的效能。
因為不斷關閉又刪除…,對不起 google….。
但我真的很想要這個酷酷的東西XD。

心得

研究 google App Script 應該是我這周六日花最多的時間呢,我才不會告訴你說最近我很喜歡打 LOL,不過這個特效我自己研究了好久都還找不太出來怎麼顯現這個特效。

畢竟 google Doc Class 並沒有針對 DocumentApp.editAsText().AppendText() 中有講述到他是先將資料放入 buffer 內。
因此我的小笨腦袋都以為他會邊 print 邊執行程式。

而且我原本想要在 google App Script 寫如何在裡面放入圖片,但我還沒有讀懂如何放入圖片…,牠放入圖片的難度有點高,主要原因是我不知道 BlobSource 此 class,要如何產生比較好…。

我覺得應該可以讓 DocumentApp.editAsText().AppendImage() 這邊放一個快速開始,告訴大家如何在 google doc 內放入圖片,這樣我就不需要一直通靈這怎麼寫了QQQ。到現在還通靈不出來

寫程式中,通靈真的是最難最痛苦的一件事RRR。

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

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