Kết nối Google Sheets với AI: Tự động điền ô

kết nối Google Sheets với AI — ảnh bìa | RevidAPI
Kết nối Google Sheets với AI: Tự động điền ô

Bạn có thể kết nối Google Sheets với AI bằng Apps Script: dùng JavaScript đọc dữ liệu, gọi API AI rồi ghi kết quả trở lại bảng tính. Thay vì sao chép từng ô sang cửa sổ chat, bạn xử lý nội dung hoặc trích xuất thông tin ngay từ các dòng đang có trong sheet. Bài viết hướng dẫn bạn chọn tác vụ, dựng luồng xử lý từng dòng và kiểm tra lỗi, chi phí trước khi tự động hóa. Bạn có thể bắt đầu với bố cục đơn giản: cột A chứa văn bản gốc, cột B nhận kết quả AI, cột C ghi trạng thái. Mục tiêu là biết kết quả thuộc dòng nào và dòng nào cần kiểm tra lại.

Tóm tắt nhanh

  • Điểm bắt đầu là menu Tiện ích mở rộng → Apps Script trong Google Sheets, nơi bạn viết mã gọi API.
  • Chọn đầu ra có thể kiểm tra được, chẳng hạn lấy mã đơn hàng từ một đoạn tin nhắn.
  • Chạy thử trên một nhóm dòng trước; kiểm tra nội dung cột B và trạng thái cột C rồi mới mở rộng phạm vi.

Google Sheets, Apps Script và API AI phối hợp như thế nào? — 250 từ

Giả sử ô A2 chứa văn bản khách hàng gửi, còn B2 cần nhận kết quả xử lý. Google Sheets giữ dữ liệu; Apps Script đọc ô, tạo yêu cầu và ghi kết quả về đúng vị trí; dịch vụ AI nhận yêu cầu rồi trả nội dung qua API.

flowchart LR
| S[Google Sheets] --> | Văn bản từ A2 | A[Apps Script] |
| --- | --- | --- |
| A --> I --> A --> | Yêu cầu xử lý Kết quả Ghi vào B2 | I[API AI] A S |

Apps Script dùng JavaScript và chạy trên hạ tầng Google, nên bạn không cần dựng máy chủ riêng để thực thi mã. Phần suy luận diễn ra tại dịch vụ AI được gọi; bảng tính là nơi nhập dữ liệu và xem kết quả.

Vì sao chọn Apps Script?

Với Google Sheets, ba cách tích hợp khác nhau chủ yếu ở nơi bạn cấu hình và mức can thiệp vào luồng xử lý:

Cách tích hợp Cách sử dụng và kiểm soát
AI tích hợp sẵn Thao tác trong giao diện Sheets, theo chức năng tài khoản được cấp.
Add-on Cài tiện ích, cấu hình theo giao diện và khả năng tiện ích cung cấp.
API tự viết Viết mã để chọn dữ liệu gửi đi, dịch vụ nhận và ô ghi kết quả.

Chọn AI để phân loại, viết bản nháp hay trích xuất dữ liệu — 250 từ

Bảy bước xây dựng luồng đọc dòng, gọi AI và ghi kết quả — 450 từ

Bước Mô tả API / Node Ghi chú
Nếu dòng 3 trống nhưng dòng 4 có dữ liệu, kết quả phải về dòng 4. Hãy giữ số dòng gốc ngay khi đọc bảng, trước khi lọc. Bước Thao tác API/dịch vụ Apps Script
1 Tạo cột dữ liệu Google Sheets
2 Mở trình soạn thảo Tiện ích mở rộng → Apps Script
3 Lưu cấu hình `PropertiesService`
4 Đọc và chọn dòng `SpreadsheetApp`, `getValues()`
5 Gửi yêu cầu AI `UrlFetchApp.fetch()`
6 Ghi kết quả `getRange()`, `setValues()`
7 Chạy thử thủ công `onOpen()`, `createMenu()` Đặt A là `input`, B là `output`, C là `status`; hàng 1 chứa tiêu đề. Nhập vài dòng mẫu và để xen một dòng trống nhằm kiểm tra việc bỏ qua dữ liệu.

2. Mở Apps Script từ bảng tính Chọn Tiện ích mở rộng → Apps Script, tạo hàm `processRows()` rồi lưu dự án. Lần chạy đầu, xem và cấp các quyền cần thiết để mã đọc bảng tính, gọi dịch vụ ngoài.

3. Lưu cấu hình ngoài ô dữ liệu Trong Project Settings → Script properties, thêm `AI_API_KEY`, `AI_MODEL` và `SHEET_NAME`. Đọc chúng bằng `PropertiesService.getScriptProperties().getProperty(…)`; nếu thiếu cấu hình, dừng trước khi xử lý dòng nào.

4. Đọc dữ liệu và giữ số dòng Dùng `getSheetByName()` chọn đúng sheet, rồi đọc từ A2:C đến hàng cuối bằng `getValues()`. Trước khi lọc, tạo bản ghi `{rowNumber: index + 2, input, status}`. Chỉ chọn dòng có đầu vào và chưa mang trạng thái `DONE`; giữ nguyên `rowNumber` sau lọc.

5. Tạo prompt và gọi API Ghép chỉ dẫn cố định với `input`

của từng bản ghi; yêu cầu rõ tên trường trả về, chẳng hạn `label`. Gọi bằng `UrlFetchApp.fetch()`. Endpoint và mã request nằm ở mục 6. Nếu gom nhiều bản ghi trong một request, gửi kèm mã dòng để đối chiếu phản hồi.

6. Kiểm tra rồi ghi đúng dòng Chỉ ghi vào B:C tại `rowNumber`

sau khi kết quả qua kiểm tra trường bắt buộc. Ghi `DONE` khi thành công, `ERROR` khi bản ghi lỗi. Lỗi toàn request phải được ghi riêng cho nhóm đã gửi; không đánh dấu thành công từng dòng. Không ghép phản hồi theo vị trí danh sách đã lọc.

7. Chạy từ menu trước khi đặt lịch Dùng `onOpen()` tạo menu gọi `processRows()`. Kiểm tra dòng trống, dòng đã `DONE` và dòng trả lỗi; đối chiếu kết quả với đầu vào. Chỉ thêm lịch trong Triggers

sau khi kiểm chứng; tránh sắp xếp hoặc chèn dòng lúc đang chạy.

Quota, chi phí và lỗi khiến luồng xử lý phải dừng — 300 từ

Một lượt xử lý có thể dừng dù tài khoản AI còn tiền: Apps Script có quota và giới hạn thời gian chạy riêng. Dịch vụ AI áp dụng rate limit, hạn mức tài khoản và cách tính phí riêng. Bạn cần đối chiếu tài liệu hiện hành của cả hai trước khi tăng số dòng mỗi lượt. Chi phí phụ thuộc đơn vị tính của dịch vụ, lượng dữ liệu gửi–nhận và số lần gọi lại. Request lỗi hoặc kết quả bị bạn loại bỏ vẫn có thể phát sinh phí, tùy chính sách. Hãy đặt trần chi tiêu nội bộ và ngừng gửi khi chạm trần.

Lỗi nào cần dừng, lỗi nào có thể thử lại?

Dùng mã HTTP để chọn cách xử lý; đừng tự động gọi lại mọi request thất bại.

Mã HTTP Kiểm tra Hành động
401 API key, header xác thực Dừng, sửa cấu hình
403 Quyền truy cập, model được phép Dừng, kiểm tra quyền
429 Rate limit hoặc hạn mức tài khoản Theo hướng dẫn dịch vụ; dùng `Retry-After` nếu có, giới hạn số lần thử

Hai tình huống tại Việt Nam: phản hồi khách hàng và danh mục sản phẩm — 250 từ

Tình huống minh họa, chưa phải case study đã kiểm chứng. Các phản hồi và mã sản phẩm SP-01 bên dưới đều giả lập, không chứa thông tin khách hàng thật.

Cửa hàng phân nhóm phản hồi Bạn thử yêu cầu gắn một hoặc nhiều nhãn trong ba nhóm `giao_hang`, `san_pham`, `doi_tra`. Đừng ép mỗi câu vào một nhóm: khách có thể vừa phàn nàn giao chậm vừa hỏi đổi hàng.

Đầu vào giả lập Nhãn minh họa cần đối chiếu
“ship lau qua, ao bi sut chi, doi dc ko” giao_hang, san_pham, doi_tra
“nhan hang roi, mau dep nhung size chat” san_pham
“shop oi doi size thi gui ve dau” doi_tra

Marketer viết nháp từ danh mục đã duyệt Đầu vào mẫu: `SP-01; túi vải; cotton; màu be; 35 × 40 cm`. Yêu cầu AI viết một câu mô tả, chỉ dùng thuộc tính có sẵn. Đầu ra minh họa: “Túi vải cotton màu be, kích thước 35 × 40 cm.” Người duyệt đối chiếu với danh mục, loại bỏ câu tự thêm “chống nước” hoặc “chịu tải 10 kg”, rồi mới chuyển bản nháp sang quy trình xuất bản. Với cả hai lượt thử, bạn ghi số dòng

được duyệt, số dòng phải sửa, mã lỗi API và chi phí thực tế nếu có dữ liệu tính phí. Các ô chưa đo để trống; không điền tỷ lệ chính xác hay khoản tiết kiệm ước đoán.

Gọi endpoint RevidAPI bằng Apps Script và kiểm soát lần chạy — 450 từ — kết nối Google Sheets với AI | RevidAPI

Gọi endpoint RevidAPI bằng Apps Script và kiểm soát lần chạy — 450 từ

Một trigger có thể khởi chạy khi lượt trước chưa xong, khiến cùng dòng bị gửi API hai lần. Với RevidAPI, bạn cần kiểm soát cả request lẫn trạng thái đã ghi vào Sheets.

Cấu hình request trước khi chạy Lấy key tại dashboard lấy API key, rồi đối chiếu Tài liệu API RevidAPI. Endpoint chat là `POST https://revidapi.com/v1/chat/completions`, xác thực bằng header `x-api-key`. Kiểm tra model và giá qua `GET https://revidapi.com/v1/chat/models`; dịch vụ tính theo token, không có một mức phí cố định cho mỗi dòng. Trong Project Settings → Script Properties, thêm `REVID_REQUEST_OPTIONS`. Đây là tên do ví dụ tự đặt. Giá trị là JSON chứa tùy chọn hợp lệ

của `UrlFetchApp.fetch`, chẳng hạn:

{ "method": "post", "contentType": "application/json", "headers": {"x-api-key": "YOUR_API_KEY"}, "payload": "{\"model\":\"claude-sonnet-5\",\"messages\":[{\"role\":\"user\",\"content\":\"Trả lời: đã nhận\"}]}", "muteHttpExceptions": true
}

Thay `YOUR_API_KEY` bằng key của bạn và xác nhận model còn được cung cấp trước khi chạy:

function callRevid() { const raw = PropertiesService.getScriptProperties() .getProperty('REVID_REQUEST_OPTIONS'); if (!raw) throw new Error('Thiếu cấu hình request'); return UrlFetchApp.fetch( 'https://revidapi.com/v1/chat/completions', JSON.parse(raw) );
}

Đây chỉ là khung gửi request với prompt thử. Kiểm tra `getResponseCode()` và `getContentText()` để xác nhận response thực tế trước khi viết phần trích nội dung; đoạn mã chưa đọc hoặc cập nhật bảng tính.

Giữ checkpoint và khóa lần chạy Trong hàm xử lý bảng, dùng `LockService.getScriptLock()` rồi `tryLock(1000)`; nếu không lấy

được khóa thì thoát. Giữ khóa trong lúc xử lý và gọi `releaseLock()` trong `finally`, kể cả khi request lỗi. Đọc vùng dữ liệu bằng `getValues()`, bỏ qua dòng có trạng thái `DONE`, rồi ghi kết quả cùng trạng thái bằng `setValues()` theo từng lô. Chỉ cập nhật checkpoint

sau khi ghi thành công. Nếu API đã trả lời nhưng script dừng trước lúc ghi, lần chạy sau vẫn có thể gửi lại dòng đó; khóa không loại bỏ được trường hợp này. Đặt trần retry trong mã, chẳng hạn `MAX_RETRIES = 2` là lựa chọn của bạn, không phải giới hạn hãng công bố. Chỉ retry lỗi được tài liệu cho phép và chờ theo hướng dẫn dịch vụ. Khi cần nối thêm CRM hoặc ứng dụng ngoài Sheets, xem Tự động hóa với n8n.

Câu hỏi thường gặp trước khi chạy AI trên bảng tính — 250 từ

Quyền truy cập và cách chạy

Question Answer
Có cần bật Google Sheets API khi sử dụng SpreadsheetApp không? Thường không. Bạn có thể đọc, ghi bảng tính bằng `SpreadsheetApp` sau khi cấp quyền cho script. Chỉ bật dịch vụ Sheets API nâng cao khi mã dùng dịch vụ đó, chẳng hạn gọi `Sheets.Spreadsheets.batchUpdate`.
Nên chọn menu hay hàm tùy chỉnh cho tác vụ phát sinh chi phí? Nên bắt đầu bằng menu để bạn chủ động quyết định lúc gửi yêu cầu. Hàm tùy chỉnh có thể chạy lại khi ô hoặc vùng dữ liệu được truyền làm đối số thay đổi; mỗi lần gọi API có thể phát sinh phí.
Người có quyền chỉnh sửa dự án có thể tiếp cận API key không? Có. Người sửa dự án có thể viết mã đọc key trong Script Properties qua `PropertiesService`. Lưu key ở đây tránh đặt trực tiếp trong mã nguồn, nhưng không thay thế việc kiểm soát quyền chỉnh sửa dự án.
Có thể dùng cùng một script cho nhiều trang tính không? Có. Dùng `getSheetByName()` để chọn tab trong một tệp; dùng `SpreadsheetApp.openById()` để mở tệp khác. Tài khoản thực thi phải có quyền truy cập từng tệp, và bạn cần kiểm tra tên cột trước khi ghi.
Cần biết JavaScript đến mức nào để sửa luồng xử lý? Bạn nên hiểu biến, mảng, vòng lặp, hàm, `JSON.parse()` và `try…catch`. Trước khi sửa luồng thật, thử đổi cột đầu vào hoặc thêm điều kiện bỏ qua dòng trống trên bảng thử.

Khám phá workflow miễn phí tại AI Tạo ảnh & Video và lấy API key tại API Marketplace RevidAPI.

Khám phá API Marketplace RevidAPI — lấy API key miễn phí · Nhóm Zalo hỗ trợ · revidapi@gmail.com

Khám phá RevidAPI

API Marketplace · Nhóm Zalo hỗ trợ

Zalo Messenger Phone
Gọi miễn phí 0978382335
Gọi miễn phí 0978382335