首頁/AI 講義/數位工具・自動化

數位工具・自動化 · Workspace+GAS+Gemini約 12 分鐘Automation

用 Gemini 自動翻譯 Google 文件內容

用 Gemini 自動翻譯 Google 文件內容 — 賴家榮 AI 教學

Overview這篇教學會幫你做出什麼

很多團隊都有一份「中文母版」文件,需要另外生出英文、日文版本。以前是複製一份、貼進翻譯網站、再一段一段貼回來,既慢又容易漏段。這篇教學要教你把 Gemini 直接裝進 Google 文件裡,開一份文件、按一下選單,就能把整份內容翻成你要的語言。

Key Takeaways

  • 在 Google 文件內建一個「AI 翻譯」自訂選單,滑鼠點一下就能執行。
  • 用 DocumentApp 逐段讀出文件內容,交給 Gemini 翻譯後回填,段落結構不跑掉。
  • API 金鑰放在指令碼屬性(PropertiesService),不會寫死在程式裡外流。
  • 翻譯結果可以選擇「附在原文下方」或「另存成新文件」,兩種做法都給你。
  • 全程用免費的 Apps Script 與 Gemini API,不必安裝任何軟體。
  • 程式碼可以直接複製貼上,看得懂、改得動、下次換語言只要改一個字。

你不需要會寫程式,只要跟著步驟一格一格貼上程式碼即可。看完之後,你會擁有一個屬於自己、可以重複使用的文件翻譯工具,之後任何文件都能沿用。

Why為什麼用 GAS+Gemini 而不是手動翻譯

手動翻譯最大的問題不是「翻得慢」,而是「格式亂」。你把文字丟到翻譯網站,貼回來之後標題、清單、段落全都黏成一團,還得花時間重排。用 DocumentApp 是以「段落」為單位讀寫,翻譯完直接對應回原本的位置,版面幾乎不用重整。

另一個好處是它住在 Google 文件裡。工具就在你每天工作的地方,不必切換視窗、不必複製貼上,同事打開同一份文件也能用同一個選單。加上 Gemini 對上下文的理解比傳統逐字翻譯更自然,專有名詞、語氣都能在提示詞裡交代清楚,品質更貼近真人。

Prepare動手前要準備的東西

Checklist

  • 一個 Google 帳號,並能正常開啟 Google 文件。
  • 到 Google AI Studio(ai.google.dev)申請一組 Gemini API 金鑰,先複製起來備用。
  • 一份要拿來測試的 Google 文件,裡面放幾段中文內容。
  • 知道怎麼從文件開啟「擴充功能 → Apps Script」(等一下會示範)。
  • 大約 15 分鐘、一顆願意照著貼程式碼的耐心。

Steps一步一步做出來

1開啟要翻譯的 Google 文件

動作打開你準備好的測試文件,確認裡面有幾段中文文字。之後這個工具會綁在這份文件上。

常見地雷如果文件是空的,等一下執行會沒有東西可翻,先貼幾段字進去。

2進入 Apps Script 編輯器

動作點上方選單「擴充功能 → Apps Script」,會開一個新分頁,就是我們寫程式的地方。

常見地雷找不到「擴充功能」通常是因為你在手機版,請改用電腦瀏覽器。

3設定 API 金鑰(不要寫死在程式裡)

動作在 Apps Script 左側點「專案設定(齒輪)→ 指令碼屬性 → 新增指令碼屬性」,屬性名稱填 GEMINI_API_KEY,值貼上你的金鑰,按儲存。

常見地雷金鑰貼到程式碼裡雖然也能跑,但分享文件時會外流,務必放在指令碼屬性。

4貼上第一段:呼叫 Gemini 的函式

動作把編輯器內原本的內容清空,貼上下方第一段 askGemini 程式碼。這是所有教學共用的「打電話給 Gemini」函式。

常見地雷網址與金鑰參數要完整,少一個字元就會回傳錯誤。照抄即可。

5貼上第二段:主流程

動作接著在下方貼上第二段主流程程式碼,它負責建立選單、讀出段落、呼叫 askGemini、再把翻譯結果寫回文件。

常見地雷TARGET_LANG 這個變數就是目標語言,想翻日文就改成「日文」,其餘不用動。

6儲存並重新整理文件

動作按上方磁碟片圖示存檔,回到 Google 文件分頁按 F5 重新整理。稍等幾秒,選單列會多出一個「AI 翻譯」。

常見地雷沒出現選單多半是 onOpen 沒存到,回編輯器確認函式名稱是 onOpen。

7第一次執行並授權

動作點「AI 翻譯 → 翻譯整份文件」。第一次會跳出授權視窗,選你的帳號、點「進階 → 前往專案(不安全)→ 允許」。

常見地雷看到「Google 尚未驗證」是正常的,因為這是你自己寫的程式,放心允許。

8檢查翻譯結果

動作授權後回到文件,稍等 Gemini 回應,翻譯內容就會附在每段原文下方。確認段落有沒有對齊、語氣是否自然。

常見地雷若整份很長會需要多等幾秒;若中途停住,多半是段落太多超時,可分批選取執行。

下面第一段程式碼是「打電話給 Gemini」的共用函式,之後每一篇教學都會用到它,直接照抄不用改。

function askGemini(prompt) {
  const key = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');
  const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=' + key;
  const payload = { contents: [{ parts: [{ text: prompt }] }] };
  const res = UrlFetchApp.fetch(url, { method:'post', contentType:'application/json', payload: JSON.stringify(payload), muteHttpExceptions:true });
  return JSON.parse(res.getContentText()).candidates[0].content.parts[0].text.trim();
}

第二段是主流程:建立選單、逐段讀出文件、翻譯後回填。想換語言只要改最上面的 TARGET_LANG。

const TARGET_LANG = '英文'; // 想翻日文就改成 '日文'

function onOpen() {
  DocumentApp.getUi()
    .createMenu('AI 翻譯')
    .addItem('翻譯整份文件', 'translateDoc')
    .addToUi();
}

function translateDoc() {
  const body = DocumentApp.getActiveDocument().getBody();
  const paras = body.getParagraphs();
  for (let i = 0; i < paras.length; i++) {
    const text = paras[i].getText().trim();
    if (!text) continue; // 跳過空段落
    const prompt = '請把以下內容翻譯成' + TARGET_LANG +
      ',只回傳翻譯結果,不要加任何說明或引號:\n\n' + text;
    const translated = askGemini(prompt);
    // 在原段落後面插入一段翻譯
    const idx = body.getChildIndex(paras[i]);
    body.insertParagraph(idx + 1, translated)
        .setForegroundColor('#1a73e8');
  }
  DocumentApp.getUi().alert('翻譯完成!翻譯內容已加在每段原文下方。');
}

存檔、重新整理文件、從選單執行,你就會看到藍色的翻譯文字出現在每段原文下方。如果你希望「另存成新文件」而不是附在原文下,可以把翻譯結果先收集成陣列,最後用 DocumentApp.create() 建立新文件再寫入。

Flow整個流程長這樣

從點選單到翻譯回填的流程
1使用者在文件點「AI 翻譯 → 翻譯整份文件」
2translateDoc 用 DocumentApp 讀出每一個段落文字
3逐段組成提示詞,呼叫 askGemini() 送到 Gemini API
4Gemini 回傳翻譯文字,程式解析出 candidates 內容
5用 insertParagraph 把翻譯插入到原段落下方
6全部處理完跳出「翻譯完成」提示

看懂這個流程後,你會發現其他 AI 自動化幾乎都是同一套骨架:讀資料 → 組提示詞 → 呼叫 Gemini → 寫回結果。換個服務、換個提示詞,就能變出各種工具。

Tips實用小技巧

FAQ常見問題

常見問題 FAQ

一定要付費才能用 Gemini API 嗎?

不用。Google AI Studio 提供免費額度,一般個人或小團隊測試、日常使用通常都在免費範圍內。你只要到 ai.google.dev 用 Google 帳號登入,就能免費產生一組 API 金鑰。當使用量很大、超過免費額度時,才需要綁定計費帳戶。建議先用免費額度把流程跑順,之後再依實際用量評估要不要升級。

為什麼一定要把金鑰放在指令碼屬性,不能直接寫在程式裡?

因為 Google 文件一旦分享或轉交給同事,對方也能開啟 Apps Script 看到程式碼。金鑰若寫死在裡面就等於外流,別人可以拿去用、算在你的額度上。放在指令碼屬性(PropertiesService)則不會跟著程式碼被看到,安全很多。這是所有串接 API 的基本習慣,養成後每個專案都受用。

執行時跳出「Google 尚未驗證這個應用程式」怎麼辦?

這是正常現象,不是錯誤。因為這支程式是你自己寫的、沒有經過 Google 商店審核,系統會提醒你確認。點「進階」再點「前往專案(不安全)」,然後「允許」即可。你是在授權自己寫的程式存取自己的文件,並沒有把權限給第三方,可以安心操作。

翻譯完段落順序亂掉了,是什麼原因?

多半是因為在迴圈中一邊讀段落、一邊插入新段落,導致索引位移。本文的寫法用 getChildIndex 動態取得當前位置再插入,通常不會亂。如果你自己改過程式,記得插入後段落數量會變多,別再用最初記下的固定索引。穩妥做法是先把所有翻譯收集起來,最後再一次寫入。

可以只翻譯我選取的那幾段嗎?

可以,而且長文件很推薦這樣做。把 getParagraphs 換成 DocumentApp.getActiveDocument().getCursor() 或選取範圍相關的 API,就能只處理選取內容。這樣既能避免整份文件跑太久超時,也方便你分段校對。初學可以先用整份版本,熟悉後再加上「只翻選取」的功能。

Gemini 回傳的翻譯有時多了引號或說明文字怎麼辦?

這通常是提示詞不夠明確造成的。可以在提示詞裡明確寫「只回傳翻譯結果,不要加任何說明、引號或前後綴」,就像本文範例那樣。若偶爾還是多字,也可以在程式裡用 replace 去掉開頭結尾的引號。把要求寫得越清楚,模型越聽話,這是寫提示詞的通則。

會不會把我的文件內容傳出去有隱私疑慮?

翻譯時文字確實會送到 Google 的 Gemini API 處理,這點跟使用任何雲端翻譯服務一樣。對一般行銷、教學文件影響不大;但若是機密合約或個資,請先評估公司規範,或改用企業版方案。原則是:不要把高度敏感的資料丟進任何外部 API,這在所有 AI 工具都適用。

翻到一半停住、出現超時錯誤怎麼辦?

Apps Script 單次執行有約 6 分鐘上限,段落太多、逐段呼叫就可能超時。解法有三:一是分批選取執行;二是把多段合併成一次請求送給 Gemini,減少呼叫次數;三是用觸發器分次處理。初學建議先用短文件測試流程,等熟悉後再處理長文件並加上分批機制。

我想翻成兩種語言,要各寫一支程式嗎?

不用。把 TARGET_LANG 從一個字串改成陣列,例如 ['英文','日文'],再用迴圈跑兩輪,每個段落下方就會依序附上兩種語言。或者更進階,翻譯結果另存成不同文件。重點是主流程不變,只是多包一層迴圈,這也是讓工具「可擴充」的常見思路。

這個工具可以分享給同事一起用嗎?

可以。把 Google 文件分享給同事,選單和程式會一起帶過去,他們打開就能用。但要注意兩點:一是每個人第一次用都要自行授權;二是金鑰額度是算在文件擁有者(也就是你)帳上。若團隊常用,建議改用共用雲端硬碟並統一管理金鑰,會更好維護。

CTA下一步|把重複工作交給流程

做完這個翻譯工具,你已經掌握「讀資料 → 呼叫 Gemini → 寫回結果」的核心套路。接下來只要換服務、換提示詞,就能把更多重複工作自動化。若想帶著團隊系統化導入,歡迎進一步了解。

想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。

預約授課・免費諮詢

本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →

代表圖片來源:圖片來源:Pexels

Your turn

把 AI,變成團隊真的用得上的能力。

不論你在哪個產業,賴家榮都能帶團隊把 AI 學到真的用得上。

預約授課・免費諮詢