getSpreadsheet.ts•1.78 kB
/**
* スプレッドシート情報取得ツール
*/
import { z } from "zod";
import { extractSpreadsheetId, getSpreadsheetInfo } from "../api/spreadsheet.js";
import { formatSpreadsheetInfo } from "../utils/format.js";
/**
* スプレッドシート情報取得ツール
* ユーザーが提供したURLからスプレッドシートの基本情報を取得
*/
export const getSpreadsheetTool = {
name: "getSpreadsheet",
description: "スプレッドシートの基本情報と含まれるシート一覧を取得",
schema: {
url: z.string().describe("スプレッドシートのURL")
},
handler: async ({ url }: { url: string }) => {
try {
const spreadsheetId = extractSpreadsheetId(url);
if (!spreadsheetId) {
return {
content: [
{
type: "text" as const,
text: "有効なスプレッドシートURLではありません。Google SpreadsheetのURLを入力してください。"
}
],
isError: true
};
}
const spreadsheetInfo = await getSpreadsheetInfo(spreadsheetId);
// フォーマットして返す
const formattedResult = formatSpreadsheetInfo(spreadsheetInfo);
return {
content: [
{
type: "text" as const,
text: formattedResult
}
]
};
} catch (error) {
console.error("スプレッドシート情報取得エラー:", error);
return {
content: [
{
type: "text" as const,
text: `スプレッドシート情報の取得中にエラーが発生しました: ${error instanceof Error ? error.message : String(error)}`
}
],
isError: true
};
}
}
};