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

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

把 Sheets 資料交給 Gemini 寫成 Docs 報告

把 Sheets 資料交給 Gemini 寫成 Docs 報告 — 賴家榮 AI 教學

Overview這篇教你做什麼

試算表裡有數據,主管要的是一份看得懂的 Word 式報告。這篇要教你用 Apps Script 把 Sheets 的資料讀出來,交給 Gemini 寫成完整報告,再用 DocumentApp 排成一份 Google 文件,數據到報告一次搞定。

Key Takeaways

  • 用 SpreadsheetApp 讀取試算表資料
  • 把資料整理成文字交給 Gemini 撰寫報告
  • 用 DocumentApp 建立文件並自動排版標題與段落
  • 報告存進雲端硬碟,可直接分享或列印
  • 金鑰用 PropertiesService 保管,安全不外露
  • 整條流程可再接觸發器,定期自動產報告

這篇把前面幾篇的技巧合起來:一邊讀 Sheets、一邊寫 Docs,中間由 Gemini 把數字變成敘述。核心仍是 askGemini,主流程負責串接試算表與文件兩個服務。

Why為什麼要這樣做

數據和報告之間,隔著一段最花時間的翻譯工作:把表格裡的數字變成一段段有邏輯的文字。這件事重複又耗神,卻又非做不可。交給 Gemini,它能讀懂表格、抓出重點、寫成通順的段落,替你完成這段翻譯。

更棒的是產出的是正式文件而非純文字。用 DocumentApp 排好標題與段落,出來就是一份可以直接交出去的 Google 文件,能分享、共編、列印成 PDF。從試算表到成品報告全自動,你只要負責審閱與微調。

Prepare開始前要準備什麼

Checklist

  • 一個可以使用 Google 試算表與文件的 Google 帳號
  • 一把 Gemini API 金鑰,到 ai.google.dev 免費申請
  • 一份含有數據的試算表,例如月度銷售或專案統計

確認試算表資料排列整齊:第一列是欄位標題,下面每列一筆。整齊的資料 Gemini 讀起來更準。同時想好你要的報告長什麼樣:要哪些章節、給誰看,這會影響你寫的提示。

Steps一步一步實作

1打開試算表的指令碼編輯器

動作在有數據的 Google 試算表點「擴充功能」→「Apps Script」,用綁定專案最方便讀取資料。

常見地雷用綁定專案才能直接用 getActiveSpreadsheet 抓到這份表;獨立專案則要用 openById 指定 ID。

2存好 Gemini 金鑰

動作在「專案設定」的「指令碼屬性」新增 GEMINI_API_KEY,貼上金鑰後儲存。

常見地雷屬性名稱要跟程式讀取的完全一致,差一個字母都會抓不到。

3貼上 askGemini 函式

動作在程式碼區貼上下方第一段 askGemini。

常見地雷這段跟其他篇相同,模型名稱別改錯,否則會回傳錯誤。

4貼上主流程 buildDocReport

動作貼上第二段主流程,它會讀取試算表、請 Gemini 撰寫報告、再用 DocumentApp 建文件排版。

常見地雷把資料工作表名稱改成你自己的;資料範圍太大時先只讀需要的部分。

5設定報告需求

動作在提示裡調整你要的章節與語氣,例如「摘要、重點分析、建議」三段,對象是主管。

常見地雷沒指定章節時 AI 會自由發揮,格式可能不穩;把結構框清楚結果才整齊。

6執行並完成授權

動作選擇 buildDocReport 按「執行」,第一次會要求授權存取試算表、雲端硬碟與外部網路,按允許。

常見地雷授權涉及多項服務,第一次視窗步驟較多屬正常,跟著指示按到底即可。

7打開報告檢查

動作執行完,紀錄會印出文件網址,點開確認章節與段落是否排好、數字有沒有寫對。

常見地雷AI 偶爾會誤讀或重述錯數字,正式送出前務必人工核對關鍵數據。

下面第一段是共用的 askGemini;第二段主流程先用 SpreadsheetApp 把資料轉成文字表格,交給 Gemini 撰寫報告,再用 DocumentApp 依標題與段落排版成文件。

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();
}
function buildDocReport() {
  // 讀取試算表資料
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('數據');
  const values = sheet.getDataRange().getValues();
  let table = '';
  values.forEach(function(row) {
    table += row.join('\t') + '\n';
  });

  // 請 Gemini 依資料撰寫報告
  const prompt = '你是資料報告撰稿人。下面是一份表格資料,第一列是欄位名稱。' +
    '請用繁體中文寫一份給主管看的報告,包含三個章節:整體摘要、重點分析、行動建議。' +
    '每個章節標題用「## 標題」獨立一行,內文用一般段落,語氣專業易懂、依數據說話。\n\n' + table;
  const content = askGemini(prompt);

  // 建立文件並排版
  const title = '數據報告 ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd');
  const doc = DocumentApp.create(title);
  const body = doc.getBody();
  body.appendParagraph(title).setHeading(DocumentApp.ParagraphHeading.TITLE);

  content.split('\n').forEach(function(line) {
    const text = line.trim();
    if (text === '') return;
    if (text.indexOf('##') === 0) {
      body.appendParagraph(text.replace(/^##\s*/, ''))
          .setHeading(DocumentApp.ParagraphHeading.HEADING1);
    } else {
      body.appendParagraph(text);
    }
  });

  doc.saveAndClose();
  Logger.log('報告已建立:' + doc.getUrl());
}

Flow整個流程長這樣

從試算表到成品報告
1讀取數據工作表的所有資料
2把數字整理成文字表格
3組出提示送給 Gemini 撰寫報告
4取回帶章節標記的報告內容
5用 DocumentApp 建立新文件
6逐行排版並存檔取得網址

這個流程串起了 Sheets 與 Docs 兩個服務:左邊讀資料、右邊寫文件,中間由 AI 負責把數字說成人話。搞懂這條線,你就能把任何一份表格自動變成報告。

Tips幾個實用小技巧

FAQ常見問題

常見問題 FAQ

報告文件會存在哪裡?

用 DocumentApp.create 建立的文件會存到執行程式的帳號的雲端硬碟根目錄,程式跑完會在紀錄印出網址,點進去就能打開。如果想收進特定資料夾,可以搭配 DriveApp 把檔案搬過去,或先建好資料夾再把文件加入,這樣多份報告就能自動分門別類收好。

Gemini 會不會把數字寫錯?

AI 擅長把數字整理成敘述,但它不是計算機,遇到複雜運算或大量數字時偶爾會誤述。最保險的做法是把關鍵計算交給試算表公式先算好,把正確結果連同表格一起給 AI,讓它只負責描述。正式送出報告前,務必人工核對重要數字,這一步不能省。

資料很多會超過限制嗎?

資料非常多時,把整份表格塞進提示可能會太長,甚至超過模型能處理的範圍。建議先在程式裡做摘要,例如只保留關鍵欄位、或先算出統計數字,再把精簡後的內容交給 Gemini。這樣既避免逾時,也讓 AI 更容易抓到重點,寫出的報告反而更聚焦。

為什麼標題沒有套用樣式?

程式是靠每行開頭有沒有 ## 來判斷是不是標題,如果 Gemini 沒照約定標示,整段就會被當成內文。解法是把提示裡的格式要求寫清楚,明確要求每個章節標題用 ## 開頭並獨立成一行。要求講得越具體,AI 越會照做,排版就會正確。

可以自訂報告的章節嗎?

可以,而且很簡單。章節是寫在提示裡的,這篇用的是摘要、分析、建議三段,你想換成任何結構都行,例如加上風險評估或下期展望。只要在提示裡列出你要的章節名稱和順序,Gemini 就會照著寫。程式的排版邏輯不用改,換提示即可。

這支程式能定時自動跑嗎?

可以。做法跟一般排程一樣,在編輯器左側的觸發條件新增一個時間驅動的觸發器,函式選 buildDocReport,設定成每月或每週執行。之後它就會定時讀取最新資料、生成報告、存進雲端硬碟,完全不用你動手。搭配自動寄信,還能把報告網址直接送到相關同事信箱。

報告可以自動寄出去嗎?

可以。取得文件之後,用 doc.getUrl() 拿到網址,再搭配 MailApp 寄信給指定收件人,就能自動把報告送出。如果要對方直接看到內容,也可以把文件匯出成 PDF 當附件寄出。這樣從讀資料、寫報告到寄送,整條流程都自動化,省下不少往返的功夫。

讀不到工作表資料怎麼辦?

先檢查程式裡指定的工作表名稱跟實際名稱是否完全相同,包含有沒有多餘空格。這篇用 getSheetByName 指定名為「數據」的工作表,如果你的表叫別的名字就要跟著改。另外確認資料範圍正確,若第一列是標題就別把它當資料處理,避免報告內容出現欄位名混進去。

每次生成的報告都一樣嗎?

不會完全一樣。AI 的措辭本來就有些變化,同一份資料跑兩次,用字和舉例可能略有不同,但主要結論會一致。如果你需要更穩定的版本,就把提示寫得更嚴謹,把章節、字數、語氣都框清楚。這樣即使重跑,格式與重點也會維持一致,方便定期產出。

這套只能做數據報告嗎?

不是。只要是試算表裡的資料,都能用類似方式轉成文件,例如問卷結果整理成分析報告、專案進度整理成週報、名單整理成摘要清單。你只要換掉資料來源和提示內容,告訴 Gemini 要寫成什麼樣的報告即可。這篇用數據當例子,換個情境改改提示就能重複使用。

CTA想更進一步嗎

當試算表能自己長出報告,數據回顧就從苦差事變成一鍵完成。如果你想把這條 Sheets 到 Docs 的自動化流程導入團隊日常,讓專業講師帶著規劃會更快上手。

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

預約授課・免費諮詢

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

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

Your turn

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

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

預約授課・免費諮詢