Google Sheet 串接
本頁在引導使用者如何利用 Google Apps Script,將 MaiAgent 的強大 AI 功能整合到 Google Sheets 中。透過這種方式,您將能夠直接在表格中呼叫您的 MaiAgent Chatbot,並實現對多個輸入的批次處理,大幅提升工作效率。
開始設定
步驟一:開啟 Google Apps Script 編輯器
打開您想要整合 MaiAgent 的 Google Sheet 試算表,或者建立一個新的試算表。
點擊頂部選單的「擴充功能」 > 「Apps Script」。

步驟二:貼上並設定指令碼
在 Apps Script 編輯器中,您會看到一個名為
Code.gs
的檔案。將其中預設的內容清空。將最下方附件 MaiAgent 提供的 Apps Script 程式碼完整複製並貼到
Code.gs
檔案中。更換開頭的 API_KEY 與 CHATBOT_ID。
更換後,點擊編輯器上方的儲存圖示 (💾) 來儲存您的指令碼。
在 Google Sheet 中使用 MaiAgent 函式
完成上述設定並成功授權後,您就可以在 Google Sheet 中像使用內建函式一樣使用 maiagent
函式了。
1. 單一呼叫 Agent
在任何儲存格中,輸入以下格式的公式:
=maiagent("您想要傳送給 Agent 的訊息內容")
例如:
=maiagent("你好,請介紹一下你自己")
=maiagent("今天天氣真好")
按下 Enter 後,指令碼會將您的訊息傳送給指定的 MaiAgent AI 助理,並將 AI 助理的回應內容顯示在該儲存格中。
2. 從其他儲存格讀取訊息內容
您可以讓 maiagent
函式讀取其他儲存格的內容作為輸入訊息。
假設儲存格 A1
包含您想要傳送的訊息,您可以在另一個儲存格(例如 B1
)中輸入:
=maiagent(A1)
這樣,B1
儲存格就會顯示 MaiAgent 對 A1
內容的回應。
串接成果影片
結論
透過 Google Apps Script 將 MaiAgent 整合至 Google Sheets,為自動化和提升生產力開闢了新的可能性。技術人員可以利用此方法,根據具體需求客製化試算表,使其成為強大的 AI 互動工具,無論是內容生成、資料分析還是自動化應答,都能更加得心應手。
附件
// --- 在這裡定義您的 API 金鑰和 Chatbot ID ---
const API_KEY = '<請替換成您實際的 API 金鑰>';
const CHATBOT_ID = '<請替換成您實際的 Chatbot ID>';
// --- --- --- --- --- --- --- --- --- --- --- ---
/**
* 向 MaiAgent API 發送訊息並直接返回回應內容。
* API 金鑰和 Chatbot ID 使用腳本開頭定義的常數。
* is_streaming 固定為 false,不傳送 conversation 和 attachments。
*
* @param {string} messageContent 要發送的訊息內容。
* @return {string} API 回應中的 "content" 欄位內容,或錯誤訊息。
*/
function maiagent(messageContent) {
// 檢查 API_KEY 和 CHATBOT_ID 是否已設定
if (API_KEY === 'YOUR_API_KEY' || CHATBOT_ID === 'YOUR_CHATBOT_ID') {
const warningMessage = '警告:API 金鑰或 Chatbot ID 尚未在腳本中設定。請編輯腳本並替換 YOUR_API_KEY 和 YOUR_CHATBOT_ID。';
Logger.log(warningMessage);
// 可以選擇在這裡拋出錯誤或返回警告,以防止無效的 API 呼叫
// throw new Error(warningMessage);
return warningMessage;
}
const url = `https://api.maiagent.ai/api/v1/chatbots/${CHATBOT_ID}/completions/`;
const payload = {
message: {
content: messageContent
},
is_streaming: false
};
const options = {
method: 'post',
contentType: 'application/json',
headers: {
'Authorization': `Api-Key ${API_KEY}`
},
payload: JSON.stringify(payload),
muteHttpExceptions: true // 設定為 true 以便處理 API 可能回傳的錯誤訊息
};
try {
const response = UrlFetchApp.fetch(url, options);
const responseCode = response.getResponseCode();
const responseBody = response.getContentText();
if (responseCode === 200) {
Logger.log('API 呼叫成功:');
Logger.log(responseBody); // 仍然記錄完整的原始回應,方便偵錯
try {
const jsonResponse = JSON.parse(responseBody);
if (jsonResponse && typeof jsonResponse.content !== 'undefined') {
return jsonResponse.content; // 直接返回 content 欄位的值
} else {
Logger.log('API 回應成功,但缺少 "content" 欄位或格式不符。');
Logger.log(responseBody);
return '錯誤: API 回應成功,但缺少 "content" 欄位。';
}
} catch (parseError) {
Logger.log(`解析 API 回應 JSON 時發生錯誤: ${parseError.toString()}`);
Logger.log(`原始回應內容: ${responseBody}`);
return `錯誤: 解析 API 回應失敗 - ${parseError.toString()}`;
}
} else {
Logger.log(`API 呼叫失敗,回應代碼: ${responseCode}`);
Logger.log(`錯誤回應內容: ${responseBody}`);
return `錯誤: ${responseCode} - ${responseBody}`;
}
} catch (e) {
Logger.log(`API 呼叫時發生異常: ${e.toString()}`);
Logger.log(e.stack); // 記錄堆疊追蹤,方便更詳細的偵錯
return `異常: ${e.toString()}`;
}
}
Last updated
Was this helpful?