set_range_values
Set a 2D array of data into a specified Excel range. Define the start cell, sheet name, and file path to populate values efficiently. Ideal for structured data entry in spreadsheets.
Instructions
指定された範囲に2次元配列のデータを設定します
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | 対象のExcelファイルの絶対パス | |
| sheetName | Yes | 対象のワークシート名 | |
| startCell | Yes | データ入力を開始するセル位置(例: A1)。ここから右下方向にデータが入力されます | |
| values | Yes | 2次元配列のデータ。外側の配列が行、内側の配列が列を表します。例: [["商品名", "価格"], ["商品A", 1000]] |
Implementation Reference
- src/index.ts:267-304 (handler)Core handler function that implements the logic to set a 2D array of values into an Excel worksheet starting from a given cell position.async function setRangeValues(filePath: string, sheetName: string, startCell: string, values: any[][]): Promise<string> { try { validateCellAddress(startCell); if (!Array.isArray(values) || values.length === 0) { throw new Error("valuesは空でない2次元配列である必要があります"); } // 2次元配列の検証 for (let i = 0; i < values.length; i++) { if (!Array.isArray(values[i])) { throw new Error(`${i+1}行目が配列ではありません。2次元配列を指定してください`); } } const workbook = await loadWorkbook(filePath); const worksheet = workbook.getWorksheet(sheetName); if (!worksheet) { throw new Error(`ワークシート '${sheetName}' が見つかりません。利用可能なシート: ${getSheetNames(workbook)}`); } const startCellObj = worksheet.getCell(startCell); const startRow = startCellObj.row; const startCol = startCellObj.col; for (let i = 0; i < values.length; i++) { for (let j = 0; j < values[i].length; j++) { worksheet.getCell(startRow + i, startCol + j).value = values[i][j]; } } await workbook.xlsx.writeFile(filePath); return `範囲 ${startCell} から ${values.length}行 x ${values[0].length}列 のデータを設定しました。`; } catch (error) { throw new McpError(ErrorCode.InternalError, `範囲値設定エラー: ${error}`); } }
- src/index.ts:43-48 (schema)Zod schema defining the input parameters and validation for the set_range_values tool.const SetRangeValuesSchema = z.object({ filePath: z.string().describe("対象のExcelファイルの絶対パス"), sheetName: z.string().describe("対象のワークシート名"), startCell: z.string().describe("データ入力を開始するセル位置(例: A1)。ここから右下方向にデータが入力されます"), values: z.array(z.array(z.union([z.string(), z.number(), z.boolean()]))).describe("2次元配列のデータ。外側の配列が行、内側の配列が列を表します。例: [[\"商品名\", \"価格\"], [\"商品A\", 1000]]"), });
- src/index.ts:492-495 (registration)Registration of the tool in the list_tools response, including name, description, and input schema.name: "set_range_values", description: "指定された範囲に2次元配列のデータを設定します", inputSchema: zodToJsonSchema(SetRangeValuesSchema) },
- src/index.ts:547-550 (registration)Tool implementation registration in the toolImplementations map, which handles argument parsing and delegates to the core handler.set_range_values: async (args: any) => { const { filePath, sheetName, startCell, values } = SetRangeValuesSchema.parse(args); return await setRangeValues(filePath, sheetName, startCell, values); },