ข้ามไปยังเนื้อหาหลัก

บทเรียน Google Apps Script และ Gemini API: การดึงข้อมูลอย่างชาญฉลาด

เรียนรู้การทำงานอัตโนมัติในการดึงข้อมูลจากอีเมลและไฟล์ PDF ด้วย Google Apps Script และ Gemini API สร้างไปป์ไลน์แบบไร้เซิร์ฟเวอร์ไปยัง Google Sheets ได้วันนี้
อัปเดตแล้ว 17 ก.ค. 2569  · 11 นาที อ่าน

การป้อนข้อมูลด้วยตนเองคือศัตรูของประสิทธิภาพการทำงาน หากทีมต้องพึ่งพาการดึงข้อมูลจากอีเมลเชิงปฏิบัติการ เช่น ใบแจ้งหนี้ การยืนยันการจอง หรือแบบฟอร์มความคิดเห็นจากลูกค้า ก็น่าจะคุ้นเคยกับความยุ่งยากของวิธีการพาร์สแบบดั้งเดิมเป็นอย่างดี 

ในอดีต นักพัฒนามักใช้ Regular Expressions (Regex) เพื่อดึงรายละเอียดอย่างเลขที่ใบแจ้งหนี้หรือยอดเรียกเก็บ แต่ Regex เปราะบางมาก เพียงผู้ขายเปลี่ยนเทมเพลตอีเมลหรือใส่ตัวแบ่งบรรทัดแบบสุ่ม ตัวพาร์สทั้งหมดก็พังโดยไม่ทันรู้ตัว

ในบทเรียนนี้ ผมจะแสดงวิธีสร้างไปป์ไลน์แบบอัตโนมัติเต็มรูปแบบและไร้ส่วนติดต่อ ที่แก้ปัญหานี้ด้วย Generative AI เราจะเขียนสคริปต์ขนาดเบาที่อ่านอีเมลที่ยังไม่ได้อ่านใน Gmail ส่งข้อความที่ไม่มีโครงสร้างไปยัง Gemini API เพื่อสกัดข้อมูลอย่างฉลาด และบันทึกข้อมูล JSON ที่มีโครงสร้างสมบูรณ์ตรงเข้าสู่ Google Sheet

ข้อกำหนดเบื้องต้น:

  • บัญชี Google
  • ความคุ้นเคยพื้นฐานกับ JavaScript (Google Apps Script)
  • คีย์ Gemini API

Google Apps Script คืออะไร?

Google Apps Script เป็นแพลตฟอร์ม พัฒนาแอปพลิเคชัน แบบคลาวด์ที่รวดเร็วบนพื้นฐานของ JavaScript ซึ่งช่วยให้ทำงานอัตโนมัติ ปรับแต่ง และขยายแอปใน Google Workspace อย่าง Google Docs, Sheets, Slides และอื่น ๆ ได้

เนื่องจากแพลตฟอร์มทำงานโดยตรงบนเซิร์ฟเวอร์ของ Google จึงไม่ต้องติดตั้งซอฟต์แวร์ ตั้งค่าสภาพแวดล้อมภายในเครื่อง หรือดูแลโครงสร้างพื้นฐาน

Apps Script เปิดโอกาสให้นักพัฒนา/นักพัฒนาโลว์โค้ดโต้ตอบกับเครื่องมือ Google Workspace อย่าง Docs, Sheets, Slides, Drive และอื่น ๆ แบบโปรแกรมได้ สามารถสร้างและรันระบบอัตโนมัติผ่านเมนูกำหนดเอง ปุ่มคลิก หรือกำหนดเวลาอิงเวลา หรือใช้บริการเพื่อสร้างและเผยแพร่ส่วนเสริมใน Google Workspace Marketplace

การทำงานของ Google Apps Script

Google Apps Script ช่วยยกภาระงานหนักของการตั้งค่าหลังบ้านและการยืนยันตัวตนกับ API ออกไป ทำให้สามารถโฟกัสกับตรรกะและข้อมูลได้ตรง ๆ โดยทำได้ผ่านคุณสมบัติต่อไปนี้:

  • เครื่องมือแก้ไขบนคลาวด์: เขียน ดีบัก และดีพลอยโค้ด JavaScript ทั้งหมดใน IDE บนเว็บที่อยู่ในเบราว์เซอร์โดยตรง
  • บริการในตัว: แทนที่จะต้องวุ่นวายกับ OAuth และการเรียก API ที่ซับซ้อน ให้ใช้วัตถุโกลบอลสำเร็จรูป (เช่น SpreadsheetApp, MailApp หรือ DriveApp) เพื่อโต้ตอบกับบริการของ Google โดยตรง
  • ทริกเกอร์แบบอีเวนต์: สคริปต์สามารถรันด้วยตนเองผ่านปุ่มเมนูกำหนดเอง หรือกำหนดให้รันอัตโนมัติด้วยทริกเกอร์อิงเวลา (เช่น เที่ยงคืนทุกวัน) และทริกเกอร์อิงเหตุการณ์ (เช่น เมื่อมีผู้ใช้ส่ง Google Form)

สถาปัตยกรรม Google Apps Script: ไปป์ไลน์จาก Gmail ไปยัง Sheets

ก่อนเขียนสคริปต์ มาวางแผนการเคลื่อนที่ของข้อมูลในไปป์ไลน์นี้กัน สถาปัตยกรรมอาศัยองค์ประกอบ 4 ส่วนที่ทำงานร่วมกัน:

  • Gmail (แหล่งข้อมูล): เริ่มต้นด้วยการค้นหากล่องจดหมายด้วยโอเปอเรเตอร์ค้นหามาตรฐาน (เช่น is:unread label:invoices) สคริปต์จะคัดแยกเธรดอีเมลที่ถูกต้องและดึงทั้งเนื้อหาข้อความล้วนและไฟล์ PDF ที่แนบมา
  • Apps Script (การประมวลผล): ทำหน้าที่เป็นชั้นการประสานงาน วนลูปผ่านเธรดที่ยังไม่ได้อ่าน จัดรูปแบบไฟล์แนบเป็นข้อมูล base64 และจัดการตรรกะการรายงานข้อผิดพลาดและการประมวลผลแบบแบตช์
  • Gemini API (เอนจินการแปลง): Apps Script ส่งเพย์โหลดแบบมัลติโหมด (ข้อความอีเมลบวกกับไฟล์ PDF) ไปยังโมเดล Gemini 2.5 Flash โดยส่งสคีมาคำตอบ JSON ที่เข้มงวดในคำขอ API เราบังคับให้โมเดลดึงค่าที่ต้องการอย่างผู้ขาย ยอดรวม และสกุลเงิน แทนการสร้างข้อความสนทนา
  • Google Sheets (ปลายทาง): เมื่อ Gemini ส่งคืน JSON ที่มีโครงสร้าง Apps Script จะพาร์สผลลัพธ์ รวมเป็นอาร์เรย์เดียว และแทรกข้อมูลแบบแบตช์ลงในแถวถัดไปที่ว่างของสเปรดชีตที่ใช้งานอยู่ด้วย setValues()

workflow-diagram

เหตุใดจึงใช้ Google Apps Script เป็นเลเยอร์ประมวลผลสำหรับงานนี้? 

ประโยชน์หลักคือการตัดภาระโครงสร้างพื้นฐานออกทั้งหมด ไม่ต้องจัดเตรียมเซิร์ฟเวอร์ และไม่ต้องตั้งค่าคอนเทนเนอร์ Docker หรือทำ OAuth ที่ซับซ้อนเพื่อจะอ่านอีเมลหรือเขียนสเปรดชีต

เพราะ Apps Script ผสานการทำงานกับบริการอย่าง GmailApp และ SpreadsheetApp โดยตรง Google จะจัดการการยืนยันตัวตนภายในให้ เพียงเขียนโค้ดและเชื่อมต่อเอ็นด์พอยต์

ขั้นตอนที่ 1: เตรียมสภาพแวดล้อม Google Apps Script

ก่อนเขียนโค้ด ต้องเตรียมการพึ่งพาภายนอกก่อน ซึ่งรวมถึงการขอสิทธิ์เข้าถึง Gemini API, สร้างสเปรดชีตปลายทาง และตั้งค่ากล่องจดหมาย Gmail เพื่อแท็กใบแจ้งหนี้ที่เข้ามาอย่างถูกต้อง

การสร้างคีย์ Gemini API

เพื่อให้การสกัดข้อมูลอัจฉริยะทำงานได้ จำเป็นต้องมีการเข้าถึง Gemini API

  1. ไปที่ Google AI Studio และลงชื่อเข้าใช้ด้วยบัญชี Google
  2. ในเมนูนำทางด้านซ้าย คลิก Get API key
  3. คลิกปุ่ม Create API key เลือกสร้างคีย์นี้ในโปรเจ็กต์ Google Cloud ที่มีอยู่แล้ว หรือให้ AI Studio สร้างโปรเจ็กต์ใหม่ให้
  4. คัดลอกสตริงที่สร้างขึ้นไว้ 

แนวทางปฏิบัติด้านความปลอดภัย: ห้ามทำหาย และที่สำคัญกว่าคืออย่าวางคีย์นี้แบบฮาร์ดโค้ดในข้อความลายในโค้ด เก็บไว้ในคลิปบอร์ดหรือโน้ตที่ปลอดภัยชั่วคราว เราจะเก็บอย่างปลอดภัยในสภาพแวดล้อม Apps Script ในขั้นถัดไป

AIStudio-Dashboard

เตรียม Google Sheet และรักษาความปลอดภัยคีย์

เราต้องมีที่เก็บข้อมูลที่สกัดออกมา แผ่นงานนี้จะทำหน้าที่เป็นฐานปล่อยสคริปต์อัตโนมัติของเราด้วย

1. ตั้งค่าหัวตารางฐานข้อมูล สร้าง Google Sheet ว่างใหม่ ในแถวแรก สร้างส่วนหัวคอลัมน์ต่อไปนี้ให้ตรงกับสคีมา JSON ที่เราจะกำหนดในสคริปต์:

  • Date
  • Vendor
  • Invoice Number
  • Total Amount
  • Currency
  • Items Summary
  • Email Link

ตรึงแถวบนสุดเพื่อให้ส่วนหัวแสดงอยู่เสมอเมื่อข้อมูลเพิ่มขึ้น

GoogleSheet

2. เข้าถึง Apps Script และเก็บคีย์ API ตอนนี้มีแผ่นงานแล้ว เราสามารถเปิดตัวแก้ไข Apps Script ได้จากแผ่นงานโดยตรง ซึ่งจะลิงก์โค้ดของเราเข้ากับสเปรดชีตนี้โดยอัตโนมัติ

  1. ใน Google Sheet คลิก Extensions > Apps Script จากเมนูด้านบนlaunch-script-editor
  2. เมื่อเครื่องมือแก้ไขเปิดขึ้น มองที่แถบด้านซ้ายแล้วคลิกไอคอนรูปเฟืองเพื่อเปิด Project Settings.

appsscript-editor

  1. เลื่อนลงไปด้านล่างสุดจนเจอส่วน Script Properties.
  2. คลิก Add script property.
  3. ในช่อง Property ให้พิมพ์ว่า GEMINI_API_KEY ตรงตามนี้
  4. ในช่อง Value วางคีย์ API ที่คัดลอกจาก AI Studio มาก่อนหน้านี้
  5. คลิก Save script properties.

store-the-gemini-api-key

โค้ดที่เขียนภายหลังจะดึงค่านี้อย่างปลอดภัยขณะรันไทม์โดยไม่เปิดเผยข้อมูลรับรอง

ขั้นตอนที่ 2: เขียนโค้ด Google Apps Script

ขณะอยู่ในตัวแก้ไข Apps Script ให้ลบโค้ดเริ่มต้นออกทั้งหมด เราจะสร้างเอนจินระบบอัตโนมัติแบบบล็อกต่อบล็อก

1. การตั้งค่าคอนฟิกและ UI

เริ่มจากการกำหนดอ็อบเจ็กต์คอนฟิกโกลบอล ซึ่งเป็นแนวทางโค้ดสะอาดที่รวบรวมตัวแปรฮาร์ดโค้ดไว้ที่เดียว ทำให้ต้องแก้ไขเฉพาะบล็อกบนสุดนี้เท่านั้น

เรายังเพิ่มฟังก์ชัน onOpen() ซึ่งเป็นทริกเกอร์ในตัวของ Apps Script ที่สร้างเมนูกำหนดเองใน Google Sheet โดยอัตโนมัติ เปิดโอกาสให้ผู้ใช้ที่ไม่ใช่สายเทคนิคเรียกใช้สคริปต์ด้วยตนเองได้โดยไม่ต้องเปิดตัวแก้ไขโค้ด

const CONFIG = {
 searchQuery: "is:unread label:invoices",
 model: "gemini-2.5-flash",
 adminEmail: Session.getActiveUser().getEmail() // Automatically emails the script owner if it crashes
};

/**
* Creates a custom menu in Google Sheets so non-technical users can run the script manually.
*/
function onOpen() {
 const ui = SpreadsheetApp.getUi();
 ui.createMenu('🤖 AI Automations')
   .addItem('Fetch New Invoices', 'processInvoices')
   .addToUi();
}

2. การตั้งค่าการประสานงาน

ฟังก์ชัน processInvoices() ทำหน้าที่เป็นตัวประสานหลัก โดยเริ่มจากการดึงคีย์ API จาก Script Properties ที่ตั้งค่าไว้ก่อนหน้าอย่างปลอดภัย 

จากนั้นใช้บริการ GmailApp ที่มีมาให้เพื่อค้นหากล่องจดหมาย

ด้วยการเรียก GmailApp.search(CONFIG.searchQuery) สคริปต์จะดึงอาร์เรย์ของเธรดอีเมลที่ตรงกับกฎ is:unread label:invoices ของเรา 

หากพบที่ตรงกัน จะวนผ่านแต่ละเธรด ดึงข้อความล่าสุด สกัดเนื้อความแบบข้อความล้วน และคัดแยกไฟล์ PDF แนบ

function processInvoices() {
  const apiKey = PropertiesService.getScriptProperties().getProperty("GEMINI_API_KEY");
  if (!apiKey) {
    throw new Error("GEMINI_API_KEY is missing! Please set it in Script Properties.");
  }

  const threads = GmailApp.search(CONFIG.searchQuery);
  if (threads.length === 0) return;

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const batchData = [];
  const processedThreads = [];

3. ประมวลผลอีเมลและไฟล์ PDF แบบมัลติโหมด

ขณะวนลูปเธรดอีเมล เราจะดึงข้อความล่าสุด อย่างไรก็ตาม ใบแจ้งหนี้แทบจะไม่มาเป็นข้อความล้วน มักถูกแนบมาเป็น PDF 

ด้วยการใช้ Gemini 2.5 Flash ซึ่งรองรับมัลติโหมดโดยกำเนิด สคริปต์ของเราจะวนผ่าน latestMessage.getAttachments() ดึงไฟล์ PDF ใด ๆ แปลงเป็นสตริง Base64 และส่งเข้าเพย์โหลด API เป็น inlineData โดยตรง 

Gemini จะ “อ่าน” PDF แบบมองเห็นและสกัดข้อมูลได้ง่ายพอ ๆ กับการอ่านข้อความ

for (let i = 0; i < threads.length; i++) {
   const thread = threads[i];
   const latestMessage = thread.getMessages().pop();
  
   const emailBody = latestMessage.getPlainBody();
   const emailDate = latestMessage.getDate();
   const emailLink = https://mail.google.com/mail/u/0/#inbox/${thread.getId()};
   const attachments = latestMessage.getAttachments();
   try {
     const geminiParts = [];
     geminiParts.push({ text: "Extract invoice details from this email and any attached documents:\n\n" + emailBody });
    
     // Add PDF attachments as base64 to the prompt
     for (const attachment of attachments) {
       if (attachment.getContentType() === "application/pdf") {
         geminiParts.push({
           inlineData: {
             mimeType: "application/pdf",
             data: Utilities.base64Encode(attachment.getBytes())
           }
         });
       }
     }
     // Invoke Gemini API
     const extractedData = callGeminiAPI(apiKey, geminiParts);

4. การแทรกแบบแบตช์และการจัดการข้อผิดพลาด

เพื่อเพิ่มประสิทธิภาพ เราจะไม่เขียนลงสเปรดชีตทีละแถว 

แต่จะดันข้อมูล JSON ที่สกัดได้เข้าอาร์เรย์ (batchData) และเขียนทั้งหมดในตอนท้ายด้วย setValues()

สังเกตบล็อก try...catch 

หาก Gemini เพี้ยนหรือผิดพลาดบนอีเมลใดอีเมลหนึ่ง สคริปต์จะไม่ล่มทั้งหมด แต่จะดักข้อผิดพลาดไว้อย่างนุ่มนวลและใช้ MailApp.sendEmail() แจ้งผู้ดูแลทันที เพื่อให้ตรวจสอบได้อย่างใกล้ชิด

 // Push to batch array instead of writing one-by-one
     batchData.push([
       emailDate,
       extractedData.vendor || "Unknown Vendor",
       extractedData.invoiceNumber || "N/A",
       extractedData.totalAmount || 0.00,
       extractedData.currency || "USD",
       extractedData.itemsSummary || "N/A",
       emailLink
     ]);
     processedThreads.push(thread);
   } catch (error) {
     MailApp.sendEmail(CONFIG.adminEmail, "🚨 Invoice Pipeline Error", error.toString());
   }
 }
 // Batch Write to Sheets
 if (batchData.length > 0) {
   const lastRow = Math.max(sheet.getLastRow(), 1);
   sheet.getRange(lastRow + 1, 1, batchData.length, batchData[0].length).setValues(batchData);
 }
 // Mark all processed threads as read so they aren't parsed again
 processedThreads.forEach(t => t.markRead());
}

สุดท้าย สคริปต์เรียก thread.markRead() กับอีเมลที่ประมวลผลแล้วทุกฉบับ เพื่อให้ครั้งถัดไปที่สคริปต์รัน จะมองข้ามอีเมลเหล่านี้และมองหาเฉพาะอีเมลใหม่

5. ฟังก์ชันผู้ช่วย Gemini API (โหมด JSON)

เมื่อติดต่อ LLM นักพัฒนามักใช้พรอมป์ทอย่าง “ส่งคืนบล็อก JSON” แต่โมเดลก็มักตอบพร้อมข้อความเกริ่น (เช่น “ได้เลย นี่คือข้อมูลของคุณ: [JSON]”) ซึ่งทำให้ตัวพาร์สโค้ดปลายทางล่ม

ด้วยการตั้งค่า responseMimeType: "application/json" และกำหนด responseSchema ที่เข้มงวด เราบังคับให้ Gemini REST API ตอบกลับเฉพาะอ็อบเจ็กต์ JSON ที่รับประกัน ซึ่งมีส่วนหัวคอลัมน์สเปรดชีตของเราอย่างถูกต้อง

function callGeminiAPI(apiKey, partsArray) {
 const url = https://generativelanguage.googleapis.com/v1beta/models/${CONFIG.model}:generateContent?key=${apiKey};
  const responseSchema = {
   type: "OBJECT",
   properties: {
     vendor: { type: "STRING" },
     invoiceNumber: { type: "STRING" },
     totalAmount: { type: "NUMBER" },
     currency: { type: "STRING" },
     itemsSummary: { type: "STRING" }
   },
   required: ["vendor", "totalAmount"]
 };
  const payload = {
   contents: [{ parts: partsArray }],
   generationConfig: {
     responseMimeType: "application/json",
     responseSchema: responseSchema
   }
 };
  const options = {
   method: "POST",
   contentType: "application/json",
   payload: JSON.stringify(payload),
   muteHttpExceptions: true
 };
  const response = UrlFetchApp.fetch(url, options);
 const jsonResponse = JSON.parse(response.getContentText());
  return JSON.parse(jsonResponse.candidates[0].content.parts[0].text);
}

ขั้นตอนที่ 3: ทำไปป์ไลน์ Google Apps Script ให้เป็นอัตโนมัติ

โค้ดจะมีคุณค่าก็ต่อเมื่อช่วยให้ชีวิตง่ายขึ้น 

Google Apps Script มีสภาพแวดล้อมการรันที่ทรงพลัง ตั้งแต่ปุ่มสำหรับผู้ใช้ ไปจนถึงงานพื้นหลังแบบไร้ส่วนติดต่อเต็มรูปแบบ

วิธีที่ 1: ทริกเกอร์ผ่าน UI ของสเปรดชีต

หากสร้างเครื่องมือนี้สำหรับทีมบัญชีที่ไม่ใช่สายเทคนิค พวกเขาอาจไม่อยากเปิดตัวแก้ไขโค้ด Apps Script เพียงเพื่อประมวลผลใบแจ้งหนี้วันนี้ 

เพราะเราใส่ฟังก์ชัน onOpen() ไว้ในโค้ด Apps Script จึงผูกเมนูกำหนดเองเข้ากับอินเทอร์เฟซ Google Sheets โดยอัตโนมัติทุกครั้งที่เปิดสเปรดชีต

  1. กลับไปที่ Google Sheet แล้วรีเฟรชหน้า
  2. รอสักครู่ แล้วดูที่แถบเมนูด้านบน จะเห็นดรอปดาวน์ใหม่ชื่อ 🤖 AI Automations.
  3. คลิกแล้วเลือก Fetch New Invoices.

running-the-automation

  1. ครั้งแรกที่รัน Google จะขออนุญาตสคริปต์ (เพื่ออ่าน Gmail และส่งอีเมลในนามของคุณ) เมื่ออนุญาตแล้ว สคริปต์จะทำงานแบบเรียลไทม์ สามารถดูข้อมูล JSON ที่สกัดได้เติมลงในแถวต่อหน้าต่อตา

วิธีที่ 2: ระบบอัตโนมัติแบบไร้ส่วนติดต่อผ่านทริกเกอร์อิงเวลา

หากต้องการระบบอัตโนมัติแบบ ตั้งแล้วลืมได้ จริง ๆ สามารถใช้ Time-Driven Triggers ในตัว เพื่อรันไปป์ไลน์อัตโนมัติในพื้นหลัง

  1. ในตัวแก้ไข Apps Script คลิก Triggers (ไอคอนนาฬิกา) ที่แถบด้านซ้าย

Trigger-button

  1. คลิก Add Trigger ที่มุมขวาล่าง

configuring-the-trigger

  1. ตั้งค่าฟังก์ชันเป็น processInvoices.
  2. เปลี่ยนแหล่งเหตุการณ์เป็น Time-driven และตั้งให้รันตามชั่วโมง (เช่น ทุก 6 ชั่วโมง)
  3. คลิก Save

Trigger-Settings

ตอนนี้ไปป์ไลน์ AI แบบไร้ส่วนติดต่อทำงานอัตโนมัติเต็มรูปแบบแล้ว

แม้ปิดคอมพิวเตอร์ เซิร์ฟเวอร์ของ Google ก็จะตื่นขึ้นทุกหกชั่วโมง สแกนกล่องจดหมาย พาร์สใบแจ้งหนี้ผ่าน Gemini, บันทึกข้อมูลลงใน Sheets แล้วเข้าสู่โหมดพัก 

สามารถติดตามความสำเร็จหรือความล้มเหลวของการรันเบื้องหลังเหล่านี้ได้โดยคลิกแท็บ Executions ในตัวแก้ไข Apps Script เพื่อดูล็อก

ขั้นตอนที่ 4: ทดสอบการสกัดข้อมูลด้วย AI

ตอนนี้โค้ดพร้อมแล้ว ต้องทดสอบเพื่อให้มั่นใจว่าไปป์ไลน์สกัดข้อมูลทำงานตามคาด

มาดูสองสถานการณ์ใช้งานจริง เพื่อดูว่า Gemini API จัดการรูปแบบข้อมูลที่ต่างกันอย่างไร และคำตอบจริงหน้าตาเป็นอย่างไร

ทดสอบที่ 1: การสกัดจากอีเมลข้อความล้วน

เริ่มจากทดสอบใบแจ้งหนี้ที่ฝังอยู่ในเนื้อหาอีเมลโดยตรง

  1. ส่งอีเมลถึงตัวเองด้วยหัวเรื่อง "Invoice INV-2023-88493"
  2. ในเนื้อหา พิมพ์ข้อความไร้โครงสร้างเช่น: "สวัสดีทีม ช่วยชำระเงินให้ Acme Corp $450.00 USD สำหรับไลเซนส์ซอฟต์แวร์ไตรมาส 3"
  3. ติดป้ายกำกับ invoices ให้กับอีเมลและปล่อยให้ยังไม่ได้อ่าน

final-email-output

  1. รันสคริปต์ผ่านเมนูกำหนดเอง

เบื้องหลัง Gemini จะได้รับข้อความไร้โครงสร้างนี้และยึดตามสคีมา JSON ของเราอย่างเคร่งครัด 

แทนที่จะตอบพร้อมข้อความเกริ่น จะส่งคืนเพย์โหลดดิบ ๆ 

เพราะคำตอบเป็น JSON ที่มีโครงสร้างสมบูรณ์ อาร์เรย์ batchData.push() ของเราจึงอ่าน extractedData.totalAmount ได้อย่างราบรื่นและบันทึก 6550 ลงใน Google Sheet โดยไม่ต้องใช้ตรรกะ Regex ที่ซับซ้อน

final-response

ทดสอบที่ 2: การสกัดจากไฟล์แนบ PDF

ต่อไป มาทดสอบพลังที่แท้จริงของ Gemini 2.5 Flash โดยส่งเอกสาร PDF เข้าไป

  1. สร้างหรือดาวน์โหลดตัวอย่างใบแจ้งหนี้ PDF (เช่น $20,700.00 จาก ProTech Cloud Services)
  2. ส่งอีเมลถึงตัวเองพร้อมไฟล์ PDF แนบ สามารถปล่อยเนื้อหาอีเมลให้ว่างได้เลย
  3. ติดป้ายกำกับ invoices และทำเครื่องหมายว่ายังไม่ได้อ่าน

email-attachment

  1. รันสคริปต์ ไปป์ไลน์จะตรวจจับไฟล์แนบ แปลงเป็น Base64 และ Gemini จะอ่านเอกสารด้วยสายตาเพื่อสกัดผู้ขายและยอดรวม

final-response

นี่คือจุดที่สถาปัตยกรรมนี้แสดงคุณค่า 

ไม่ต้องเขียนตรรกะ OCR (Optical Character Recognition) เอง ไม่ต้องจัดการไลบรารีพาร์ส PDF แยกต่างหาก หรือเขียน regex เพื่อหายอดรวม 

LLM จัดการข้อมูลภาพที่ไม่มีโครงสร้างได้โดยกำเนิด

สรุป

การทำงานของธุรกิจให้เป็นอัตโนมัติไม่จำเป็นต้องดูแลโครงสร้างพื้นฐานหนักหน่วงหรือสู้กับขั้นตอนอนุญาตที่ซับซ้อน 

ด้วยการจับคู่ Google Apps Script กับ Gemini API เราได้สร้างไปป์ไลน์สกัดข้อมูลแบบอัจฉริยะ ไร้เซิร์ฟเวอร์ ที่ทำงานทั้งหมดภายในระบบคลาวด์ที่ใช้อยู่ทุกวัน

จุดแข็งของสถาปัตยกรรมนี้อยู่ที่ความเรียบง่าย แทนที่จะต้องจัดเตรียมเซิร์ฟเวอร์ ตั้งค่าเว็บฮุค หรือจัดการไฟล์ข้อมูลรับรองอย่างปลอดภัยบนเซิร์ฟเวอร์ภายนอก Apps Script จะดูแลบริบท การยืนยันตัวตน และการรันให้อย่างเป็นธรรมชาติ

ในขณะเดียวกัน Gemini ก็ช่วยตัดความจำเป็นของ regex ที่เปราะบางหรือซอฟต์แวร์ OCR ที่มีราคาแพง เปลี่ยนเนื้อหาอีเมลที่ยุ่งเหยิงและ PDF ที่ไม่มีโครงสร้างให้เป็นแถวข้อมูลในฐานข้อมูลที่คาดเดาได้ด้วยคำขอ API เพียงครั้งเดียว

หากต้องการพัฒนาทักษะต่อและสำรวจสิ่งที่สร้างได้เพิ่มเติมด้วยการเข้าถึง LLM แบบโปรแกรม แนะนำให้ดูคอร์สของ DataCamp เรื่อง Introduction to APIs in Python หรือเจาะลึกการออกแบบเวิร์กโฟลว์อัจฉริยะด้วย AI Agent Fundamentals ได้

หัวข้อ

คอร์สยอดนิยมจาก DataCamp

Courses

Building AI Agents with Google ADK

1 ชม.
6.8K
Build a customer-support assistant step-by-step with Google’s Agent Development Kit (ADK).
ดูรายละเอียดRight Arrow
เริ่มหลักสูตร
ดูเพิ่มเติมRight Arrow