@danyow/lark-mcp 0.5.5 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v2.d.ts +89 -1
- package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v2.js +60 -1
- package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v2.d.ts +89 -1
- package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v2.js +66 -1
- package/dist/mcp-tool/utils/handler.js +60 -3
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export type sheetsV2ToolName = 'sheets.v2.spreadsheetValues.get' | 'sheets.v2.spreadsheetValues.batchGet' | 'sheets.v2.spreadsheetValues.update' | 'sheets.v2.spreadsheetValues.batchUpdate' | 'sheets.v2.spreadsheetValues.append' | 'sheets.v2.spreadsheetDimensionRange.insert' | 'sheets.v2.spreadsheetDimensionRange.delete';
|
|
2
|
+
export type sheetsV2ToolName = 'sheets.v2.spreadsheetValues.get' | 'sheets.v2.spreadsheetValues.batchGet' | 'sheets.v2.spreadsheetValues.update' | 'sheets.v2.spreadsheetValues.batchUpdate' | 'sheets.v2.spreadsheetValues.append' | 'sheets.v2.spreadsheetDimensionRange.insert' | 'sheets.v2.spreadsheetDimensionRange.delete' | 'sheets.v2.spreadsheet.mergeCells' | 'sheets.v2.spreadsheet.unmergeCells';
|
|
3
3
|
/**
|
|
4
4
|
* Read a single range of cells
|
|
5
5
|
* GET /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/values/:range
|
|
@@ -327,6 +327,69 @@ export declare const sheetsV2SpreadsheetDimensionRangeDelete: {
|
|
|
327
327
|
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
328
328
|
};
|
|
329
329
|
};
|
|
330
|
+
/**
|
|
331
|
+
* Merge cells
|
|
332
|
+
* POST /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/merge_cells
|
|
333
|
+
*/
|
|
334
|
+
export declare const sheetsV2SpreadsheetMergeCells: {
|
|
335
|
+
project: string;
|
|
336
|
+
name: string;
|
|
337
|
+
sdkName: string;
|
|
338
|
+
path: string;
|
|
339
|
+
httpMethod: string;
|
|
340
|
+
description: string;
|
|
341
|
+
accessTokens: string[];
|
|
342
|
+
schema: {
|
|
343
|
+
data: z.ZodObject<{
|
|
344
|
+
range: z.ZodString;
|
|
345
|
+
mergeType: z.ZodEnum<["MERGE_ALL", "MERGE_ROWS", "MERGE_COLUMNS"]>;
|
|
346
|
+
}, "strip", z.ZodTypeAny, {
|
|
347
|
+
range: string;
|
|
348
|
+
mergeType: "MERGE_ALL" | "MERGE_ROWS" | "MERGE_COLUMNS";
|
|
349
|
+
}, {
|
|
350
|
+
range: string;
|
|
351
|
+
mergeType: "MERGE_ALL" | "MERGE_ROWS" | "MERGE_COLUMNS";
|
|
352
|
+
}>;
|
|
353
|
+
path: z.ZodOptional<z.ZodObject<{
|
|
354
|
+
spreadsheet_token: z.ZodOptional<z.ZodString>;
|
|
355
|
+
}, "strip", z.ZodTypeAny, {
|
|
356
|
+
spreadsheet_token?: string | undefined;
|
|
357
|
+
}, {
|
|
358
|
+
spreadsheet_token?: string | undefined;
|
|
359
|
+
}>>;
|
|
360
|
+
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* Unmerge cells
|
|
365
|
+
* POST /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/unmerge_cells
|
|
366
|
+
*/
|
|
367
|
+
export declare const sheetsV2SpreadsheetUnmergeCells: {
|
|
368
|
+
project: string;
|
|
369
|
+
name: string;
|
|
370
|
+
sdkName: string;
|
|
371
|
+
path: string;
|
|
372
|
+
httpMethod: string;
|
|
373
|
+
description: string;
|
|
374
|
+
accessTokens: string[];
|
|
375
|
+
schema: {
|
|
376
|
+
data: z.ZodObject<{
|
|
377
|
+
range: z.ZodString;
|
|
378
|
+
}, "strip", z.ZodTypeAny, {
|
|
379
|
+
range: string;
|
|
380
|
+
}, {
|
|
381
|
+
range: string;
|
|
382
|
+
}>;
|
|
383
|
+
path: z.ZodOptional<z.ZodObject<{
|
|
384
|
+
spreadsheet_token: z.ZodOptional<z.ZodString>;
|
|
385
|
+
}, "strip", z.ZodTypeAny, {
|
|
386
|
+
spreadsheet_token?: string | undefined;
|
|
387
|
+
}, {
|
|
388
|
+
spreadsheet_token?: string | undefined;
|
|
389
|
+
}>>;
|
|
390
|
+
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
391
|
+
};
|
|
392
|
+
};
|
|
330
393
|
export declare const sheetsV2ToolName: sheetsV2ToolName[];
|
|
331
394
|
export declare const sheetsV2Tools: ({
|
|
332
395
|
project: string;
|
|
@@ -520,4 +583,29 @@ export declare const sheetsV2Tools: ({
|
|
|
520
583
|
}>;
|
|
521
584
|
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
522
585
|
};
|
|
586
|
+
} | {
|
|
587
|
+
project: string;
|
|
588
|
+
name: string;
|
|
589
|
+
sdkName: string;
|
|
590
|
+
path: string;
|
|
591
|
+
httpMethod: string;
|
|
592
|
+
description: string;
|
|
593
|
+
accessTokens: string[];
|
|
594
|
+
schema: {
|
|
595
|
+
data: z.ZodObject<{
|
|
596
|
+
range: z.ZodString;
|
|
597
|
+
}, "strip", z.ZodTypeAny, {
|
|
598
|
+
range: string;
|
|
599
|
+
}, {
|
|
600
|
+
range: string;
|
|
601
|
+
}>;
|
|
602
|
+
path: z.ZodOptional<z.ZodObject<{
|
|
603
|
+
spreadsheet_token: z.ZodOptional<z.ZodString>;
|
|
604
|
+
}, "strip", z.ZodTypeAny, {
|
|
605
|
+
spreadsheet_token?: string | undefined;
|
|
606
|
+
}, {
|
|
607
|
+
spreadsheet_token?: string | undefined;
|
|
608
|
+
}>>;
|
|
609
|
+
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
610
|
+
};
|
|
523
611
|
})[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sheetsV2Tools = exports.sheetsV2ToolName = exports.sheetsV2SpreadsheetDimensionRangeDelete = exports.sheetsV2SpreadsheetDimensionRangeInsert = exports.sheetsV2SpreadsheetValuesAppend = exports.sheetsV2SpreadsheetValuesBatchUpdate = exports.sheetsV2SpreadsheetValuesUpdate = exports.sheetsV2SpreadsheetValuesBatchGet = exports.sheetsV2SpreadsheetValuesGet = void 0;
|
|
3
|
+
exports.sheetsV2Tools = exports.sheetsV2ToolName = exports.sheetsV2SpreadsheetUnmergeCells = exports.sheetsV2SpreadsheetMergeCells = exports.sheetsV2SpreadsheetDimensionRangeDelete = exports.sheetsV2SpreadsheetDimensionRangeInsert = exports.sheetsV2SpreadsheetValuesAppend = exports.sheetsV2SpreadsheetValuesBatchUpdate = exports.sheetsV2SpreadsheetValuesUpdate = exports.sheetsV2SpreadsheetValuesBatchGet = exports.sheetsV2SpreadsheetValuesGet = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
/**
|
|
6
6
|
* Read a single range of cells
|
|
@@ -211,6 +211,61 @@ exports.sheetsV2SpreadsheetDimensionRangeDelete = {
|
|
|
211
211
|
useUAT: zod_1.z.boolean().describe('Use user access token, otherwise use tenant access token').optional(),
|
|
212
212
|
},
|
|
213
213
|
};
|
|
214
|
+
/**
|
|
215
|
+
* Merge cells
|
|
216
|
+
* POST /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/merge_cells
|
|
217
|
+
*/
|
|
218
|
+
exports.sheetsV2SpreadsheetMergeCells = {
|
|
219
|
+
project: 'sheets',
|
|
220
|
+
name: 'sheets.v2.spreadsheet.mergeCells',
|
|
221
|
+
sdkName: 'sheets.v2.spreadsheet.mergeCells',
|
|
222
|
+
path: '/open-apis/sheets/v2/spreadsheets/:spreadsheet_token/merge_cells',
|
|
223
|
+
httpMethod: 'POST',
|
|
224
|
+
description: '[Feishu/Lark]-Docs-Sheets-Cell-Merge cells-Merge cells in the specified range within the spreadsheet. Single operation limited to 5000 rows and 100 columns',
|
|
225
|
+
accessTokens: ['tenant', 'user'],
|
|
226
|
+
schema: {
|
|
227
|
+
data: zod_1.z.object({
|
|
228
|
+
range: zod_1.z
|
|
229
|
+
.string()
|
|
230
|
+
.describe('The range of cells to merge. Format: `<sheetId>!<start>:<end>`. Example: `sheetId!A1:B2`, `sheetId!F1:H1`'),
|
|
231
|
+
mergeType: zod_1.z
|
|
232
|
+
.enum(['MERGE_ALL', 'MERGE_ROWS', 'MERGE_COLUMNS'])
|
|
233
|
+
.describe('Merge type. - MERGE_ALL: Merge all selected cells into one- MERGE_ROWS: Merge selected area by rows- MERGE_COLUMNS: Merge selected area by columns'),
|
|
234
|
+
}),
|
|
235
|
+
path: zod_1.z
|
|
236
|
+
.object({
|
|
237
|
+
spreadsheet_token: zod_1.z.string().describe('Spreadsheet token').optional(),
|
|
238
|
+
})
|
|
239
|
+
.optional(),
|
|
240
|
+
useUAT: zod_1.z.boolean().describe('Use user access token, otherwise use tenant access token').optional(),
|
|
241
|
+
},
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Unmerge cells
|
|
245
|
+
* POST /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/unmerge_cells
|
|
246
|
+
*/
|
|
247
|
+
exports.sheetsV2SpreadsheetUnmergeCells = {
|
|
248
|
+
project: 'sheets',
|
|
249
|
+
name: 'sheets.v2.spreadsheet.unmergeCells',
|
|
250
|
+
sdkName: 'sheets.v2.spreadsheet.unmergeCells',
|
|
251
|
+
path: '/open-apis/sheets/v2/spreadsheets/:spreadsheet_token/unmerge_cells',
|
|
252
|
+
httpMethod: 'POST',
|
|
253
|
+
description: '[Feishu/Lark]-Docs-Sheets-Cell-Unmerge cells-Split merged cells in the specified range within the spreadsheet',
|
|
254
|
+
accessTokens: ['tenant', 'user'],
|
|
255
|
+
schema: {
|
|
256
|
+
data: zod_1.z.object({
|
|
257
|
+
range: zod_1.z
|
|
258
|
+
.string()
|
|
259
|
+
.describe('The range of cells to unmerge. Format: `<sheetId>!<start>:<end>`. Example: `sheetId!A1:B2`, `sheetId!F1:H1`'),
|
|
260
|
+
}),
|
|
261
|
+
path: zod_1.z
|
|
262
|
+
.object({
|
|
263
|
+
spreadsheet_token: zod_1.z.string().describe('Spreadsheet token').optional(),
|
|
264
|
+
})
|
|
265
|
+
.optional(),
|
|
266
|
+
useUAT: zod_1.z.boolean().describe('Use user access token, otherwise use tenant access token').optional(),
|
|
267
|
+
},
|
|
268
|
+
};
|
|
214
269
|
exports.sheetsV2ToolName = [
|
|
215
270
|
'sheets.v2.spreadsheetValues.get',
|
|
216
271
|
'sheets.v2.spreadsheetValues.batchGet',
|
|
@@ -219,6 +274,8 @@ exports.sheetsV2ToolName = [
|
|
|
219
274
|
'sheets.v2.spreadsheetValues.append',
|
|
220
275
|
'sheets.v2.spreadsheetDimensionRange.insert',
|
|
221
276
|
'sheets.v2.spreadsheetDimensionRange.delete',
|
|
277
|
+
'sheets.v2.spreadsheet.mergeCells',
|
|
278
|
+
'sheets.v2.spreadsheet.unmergeCells',
|
|
222
279
|
];
|
|
223
280
|
exports.sheetsV2Tools = [
|
|
224
281
|
exports.sheetsV2SpreadsheetValuesGet,
|
|
@@ -228,4 +285,6 @@ exports.sheetsV2Tools = [
|
|
|
228
285
|
exports.sheetsV2SpreadsheetValuesAppend,
|
|
229
286
|
exports.sheetsV2SpreadsheetDimensionRangeInsert,
|
|
230
287
|
exports.sheetsV2SpreadsheetDimensionRangeDelete,
|
|
288
|
+
exports.sheetsV2SpreadsheetMergeCells,
|
|
289
|
+
exports.sheetsV2SpreadsheetUnmergeCells,
|
|
231
290
|
];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export type sheetsV2ToolName = 'sheets.v2.spreadsheetValues.get' | 'sheets.v2.spreadsheetValues.batchGet' | 'sheets.v2.spreadsheetValues.update' | 'sheets.v2.spreadsheetValues.batchUpdate' | 'sheets.v2.spreadsheetValues.append' | 'sheets.v2.spreadsheetDimensionRange.insert' | 'sheets.v2.spreadsheetDimensionRange.delete';
|
|
2
|
+
export type sheetsV2ToolName = 'sheets.v2.spreadsheetValues.get' | 'sheets.v2.spreadsheetValues.batchGet' | 'sheets.v2.spreadsheetValues.update' | 'sheets.v2.spreadsheetValues.batchUpdate' | 'sheets.v2.spreadsheetValues.append' | 'sheets.v2.spreadsheetDimensionRange.insert' | 'sheets.v2.spreadsheetDimensionRange.delete' | 'sheets.v2.spreadsheet.mergeCells' | 'sheets.v2.spreadsheet.unmergeCells';
|
|
3
3
|
/**
|
|
4
4
|
* 读取单个范围
|
|
5
5
|
* GET /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/values/:range
|
|
@@ -327,6 +327,69 @@ export declare const sheetsV2SpreadsheetDimensionRangeDelete: {
|
|
|
327
327
|
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
328
328
|
};
|
|
329
329
|
};
|
|
330
|
+
/**
|
|
331
|
+
* 合并单元格
|
|
332
|
+
* POST /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/merge_cells
|
|
333
|
+
*/
|
|
334
|
+
export declare const sheetsV2SpreadsheetMergeCells: {
|
|
335
|
+
project: string;
|
|
336
|
+
name: string;
|
|
337
|
+
sdkName: string;
|
|
338
|
+
path: string;
|
|
339
|
+
httpMethod: string;
|
|
340
|
+
description: string;
|
|
341
|
+
accessTokens: string[];
|
|
342
|
+
schema: {
|
|
343
|
+
data: z.ZodObject<{
|
|
344
|
+
range: z.ZodString;
|
|
345
|
+
mergeType: z.ZodEnum<["MERGE_ALL", "MERGE_ROWS", "MERGE_COLUMNS"]>;
|
|
346
|
+
}, "strip", z.ZodTypeAny, {
|
|
347
|
+
range: string;
|
|
348
|
+
mergeType: "MERGE_ALL" | "MERGE_ROWS" | "MERGE_COLUMNS";
|
|
349
|
+
}, {
|
|
350
|
+
range: string;
|
|
351
|
+
mergeType: "MERGE_ALL" | "MERGE_ROWS" | "MERGE_COLUMNS";
|
|
352
|
+
}>;
|
|
353
|
+
path: z.ZodOptional<z.ZodObject<{
|
|
354
|
+
spreadsheet_token: z.ZodOptional<z.ZodString>;
|
|
355
|
+
}, "strip", z.ZodTypeAny, {
|
|
356
|
+
spreadsheet_token?: string | undefined;
|
|
357
|
+
}, {
|
|
358
|
+
spreadsheet_token?: string | undefined;
|
|
359
|
+
}>>;
|
|
360
|
+
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* 拆分单元格
|
|
365
|
+
* POST /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/unmerge_cells
|
|
366
|
+
*/
|
|
367
|
+
export declare const sheetsV2SpreadsheetUnmergeCells: {
|
|
368
|
+
project: string;
|
|
369
|
+
name: string;
|
|
370
|
+
sdkName: string;
|
|
371
|
+
path: string;
|
|
372
|
+
httpMethod: string;
|
|
373
|
+
description: string;
|
|
374
|
+
accessTokens: string[];
|
|
375
|
+
schema: {
|
|
376
|
+
data: z.ZodObject<{
|
|
377
|
+
range: z.ZodString;
|
|
378
|
+
}, "strip", z.ZodTypeAny, {
|
|
379
|
+
range: string;
|
|
380
|
+
}, {
|
|
381
|
+
range: string;
|
|
382
|
+
}>;
|
|
383
|
+
path: z.ZodOptional<z.ZodObject<{
|
|
384
|
+
spreadsheet_token: z.ZodOptional<z.ZodString>;
|
|
385
|
+
}, "strip", z.ZodTypeAny, {
|
|
386
|
+
spreadsheet_token?: string | undefined;
|
|
387
|
+
}, {
|
|
388
|
+
spreadsheet_token?: string | undefined;
|
|
389
|
+
}>>;
|
|
390
|
+
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
391
|
+
};
|
|
392
|
+
};
|
|
330
393
|
export declare const sheetsV2ToolName: sheetsV2ToolName[];
|
|
331
394
|
export declare const sheetsV2Tools: ({
|
|
332
395
|
project: string;
|
|
@@ -520,4 +583,29 @@ export declare const sheetsV2Tools: ({
|
|
|
520
583
|
}>;
|
|
521
584
|
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
522
585
|
};
|
|
586
|
+
} | {
|
|
587
|
+
project: string;
|
|
588
|
+
name: string;
|
|
589
|
+
sdkName: string;
|
|
590
|
+
path: string;
|
|
591
|
+
httpMethod: string;
|
|
592
|
+
description: string;
|
|
593
|
+
accessTokens: string[];
|
|
594
|
+
schema: {
|
|
595
|
+
data: z.ZodObject<{
|
|
596
|
+
range: z.ZodString;
|
|
597
|
+
}, "strip", z.ZodTypeAny, {
|
|
598
|
+
range: string;
|
|
599
|
+
}, {
|
|
600
|
+
range: string;
|
|
601
|
+
}>;
|
|
602
|
+
path: z.ZodOptional<z.ZodObject<{
|
|
603
|
+
spreadsheet_token: z.ZodOptional<z.ZodString>;
|
|
604
|
+
}, "strip", z.ZodTypeAny, {
|
|
605
|
+
spreadsheet_token?: string | undefined;
|
|
606
|
+
}, {
|
|
607
|
+
spreadsheet_token?: string | undefined;
|
|
608
|
+
}>>;
|
|
609
|
+
useUAT: z.ZodOptional<z.ZodBoolean>;
|
|
610
|
+
};
|
|
523
611
|
})[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sheetsV2Tools = exports.sheetsV2ToolName = exports.sheetsV2SpreadsheetDimensionRangeDelete = exports.sheetsV2SpreadsheetDimensionRangeInsert = exports.sheetsV2SpreadsheetValuesAppend = exports.sheetsV2SpreadsheetValuesBatchUpdate = exports.sheetsV2SpreadsheetValuesUpdate = exports.sheetsV2SpreadsheetValuesBatchGet = exports.sheetsV2SpreadsheetValuesGet = void 0;
|
|
3
|
+
exports.sheetsV2Tools = exports.sheetsV2ToolName = exports.sheetsV2SpreadsheetUnmergeCells = exports.sheetsV2SpreadsheetMergeCells = exports.sheetsV2SpreadsheetDimensionRangeDelete = exports.sheetsV2SpreadsheetDimensionRangeInsert = exports.sheetsV2SpreadsheetValuesAppend = exports.sheetsV2SpreadsheetValuesBatchUpdate = exports.sheetsV2SpreadsheetValuesUpdate = exports.sheetsV2SpreadsheetValuesBatchGet = exports.sheetsV2SpreadsheetValuesGet = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
/**
|
|
6
6
|
* 读取单个范围
|
|
@@ -211,6 +211,67 @@ exports.sheetsV2SpreadsheetDimensionRangeDelete = {
|
|
|
211
211
|
useUAT: zod_1.z.boolean().describe('使用用户访问令牌,否则使用租户访问令牌').optional(),
|
|
212
212
|
},
|
|
213
213
|
};
|
|
214
|
+
/**
|
|
215
|
+
* 合并单元格
|
|
216
|
+
* POST /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/merge_cells
|
|
217
|
+
*/
|
|
218
|
+
exports.sheetsV2SpreadsheetMergeCells = {
|
|
219
|
+
project: 'sheets',
|
|
220
|
+
name: 'sheets.v2.spreadsheet.mergeCells',
|
|
221
|
+
sdkName: 'sheets.v2.spreadsheet.mergeCells',
|
|
222
|
+
path: '/open-apis/sheets/v2/spreadsheets/:spreadsheet_token/merge_cells',
|
|
223
|
+
httpMethod: 'POST',
|
|
224
|
+
description: '[飞书]-云文档-电子表格-单元格-合并单元格-合并电子表格工作表中指定范围内的单元格。单次操作不超过5000行、100列',
|
|
225
|
+
accessTokens: ['tenant', 'user'],
|
|
226
|
+
schema: {
|
|
227
|
+
data: zod_1.z.object({
|
|
228
|
+
range: zod_1.z
|
|
229
|
+
.string()
|
|
230
|
+
.describe('要合并的单元格范围。格式为 `<sheetId>!<开始位置>:<结束位置>`。例如 `A1:B2`、`F1:H1`'),
|
|
231
|
+
mergeType: zod_1.z
|
|
232
|
+
.enum(['MERGE_ALL', 'MERGE_ROWS', 'MERGE_COLUMNS'])
|
|
233
|
+
.describe('合并类型。- MERGE_ALL:将所选区域直接合并- MERGE_ROWS:将所选区域按行合并- MERGE_COLUMNS:将所选区域按列合并'),
|
|
234
|
+
}),
|
|
235
|
+
path: zod_1.z
|
|
236
|
+
.object({
|
|
237
|
+
spreadsheet_token: zod_1.z
|
|
238
|
+
.string()
|
|
239
|
+
.describe('电子表格的 token。可通过以下两种方式获取。了解更多,参考[电子表格概述]。- 电子表格的 URL:https://sample.feishu.cn/sheets/==Iow7sNNEphp3WbtnbCscPqabcef==- 调用[获取文件夹中的文件清单]')
|
|
240
|
+
.optional(),
|
|
241
|
+
})
|
|
242
|
+
.optional(),
|
|
243
|
+
useUAT: zod_1.z.boolean().describe('使用用户访问令牌,否则使用租户访问令牌').optional(),
|
|
244
|
+
},
|
|
245
|
+
};
|
|
246
|
+
/**
|
|
247
|
+
* 拆分单元格
|
|
248
|
+
* POST /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/unmerge_cells
|
|
249
|
+
*/
|
|
250
|
+
exports.sheetsV2SpreadsheetUnmergeCells = {
|
|
251
|
+
project: 'sheets',
|
|
252
|
+
name: 'sheets.v2.spreadsheet.unmergeCells',
|
|
253
|
+
sdkName: 'sheets.v2.spreadsheet.unmergeCells',
|
|
254
|
+
path: '/open-apis/sheets/v2/spreadsheets/:spreadsheet_token/unmerge_cells',
|
|
255
|
+
httpMethod: 'POST',
|
|
256
|
+
description: '[飞书]-云文档-电子表格-单元格-拆分单元格-拆分电子表格工作表中指定范围内的合并单元格',
|
|
257
|
+
accessTokens: ['tenant', 'user'],
|
|
258
|
+
schema: {
|
|
259
|
+
data: zod_1.z.object({
|
|
260
|
+
range: zod_1.z
|
|
261
|
+
.string()
|
|
262
|
+
.describe('要拆分的单元格范围。格式为 `<sheetId>!<开始位置>:<结束位置>`。例如 `sheetId!A1:B2`、`sheetId!F1:H1`'),
|
|
263
|
+
}),
|
|
264
|
+
path: zod_1.z
|
|
265
|
+
.object({
|
|
266
|
+
spreadsheet_token: zod_1.z
|
|
267
|
+
.string()
|
|
268
|
+
.describe('电子表格的 token。可通过以下两种方式获取。了解更多,参考[电子表格概述]。- 电子表格的 URL:https://sample.feishu.cn/sheets/==Iow7sNNEphp3WbtnbCscPqabcef==- 调用[获取文件夹中的文件清单]')
|
|
269
|
+
.optional(),
|
|
270
|
+
})
|
|
271
|
+
.optional(),
|
|
272
|
+
useUAT: zod_1.z.boolean().describe('使用用户访问令牌,否则使用租户访问令牌').optional(),
|
|
273
|
+
},
|
|
274
|
+
};
|
|
214
275
|
exports.sheetsV2ToolName = [
|
|
215
276
|
'sheets.v2.spreadsheetValues.get',
|
|
216
277
|
'sheets.v2.spreadsheetValues.batchGet',
|
|
@@ -219,6 +280,8 @@ exports.sheetsV2ToolName = [
|
|
|
219
280
|
'sheets.v2.spreadsheetValues.append',
|
|
220
281
|
'sheets.v2.spreadsheetDimensionRange.insert',
|
|
221
282
|
'sheets.v2.spreadsheetDimensionRange.delete',
|
|
283
|
+
'sheets.v2.spreadsheet.mergeCells',
|
|
284
|
+
'sheets.v2.spreadsheet.unmergeCells',
|
|
222
285
|
];
|
|
223
286
|
exports.sheetsV2Tools = [
|
|
224
287
|
exports.sheetsV2SpreadsheetValuesGet,
|
|
@@ -228,4 +291,6 @@ exports.sheetsV2Tools = [
|
|
|
228
291
|
exports.sheetsV2SpreadsheetValuesAppend,
|
|
229
292
|
exports.sheetsV2SpreadsheetDimensionRangeInsert,
|
|
230
293
|
exports.sheetsV2SpreadsheetDimensionRangeDelete,
|
|
294
|
+
exports.sheetsV2SpreadsheetMergeCells,
|
|
295
|
+
exports.sheetsV2SpreadsheetUnmergeCells,
|
|
231
296
|
];
|
|
@@ -41,15 +41,50 @@ const logger_1 = require("../../utils/logger");
|
|
|
41
41
|
* e.g., /open-apis/sheets/v2/spreadsheets/:spreadsheet_token/values/:range
|
|
42
42
|
* with pathParams { spreadsheet_token: "xxx", range: "yyy" }
|
|
43
43
|
* becomes /open-apis/sheets/v2/spreadsheets/xxx/values/yyy
|
|
44
|
+
*
|
|
45
|
+
* 注意:range 参数中的 ! 和 : 不做 URL 编码,飞书 API 可直接解析
|
|
44
46
|
*/
|
|
45
47
|
const fillApiPath = (apiPath, pathParams = {}) => {
|
|
46
48
|
return apiPath.replace(/:([^/]+)/g, (_, key) => {
|
|
47
49
|
if (pathParams[key] !== undefined) {
|
|
50
|
+
if (key === 'range') {
|
|
51
|
+
// range 参数保留 ! 和 : 字符,避免飞书 API 解析出错
|
|
52
|
+
return encodeURIComponent(pathParams[key])
|
|
53
|
+
.replace(/%21/g, '!')
|
|
54
|
+
.replace(/%3A/gi, ':');
|
|
55
|
+
}
|
|
48
56
|
return encodeURIComponent(pathParams[key]);
|
|
49
57
|
}
|
|
50
58
|
throw new Error(`Missing path parameter: ${key}`);
|
|
51
59
|
});
|
|
52
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* 飞书 Sheets API 不支持 JSON boolean(错误码 90204)
|
|
63
|
+
* 将 values 单元格数组中的 boolean 值转换为 "TRUE"/"FALSE" 字符串
|
|
64
|
+
* 注意:不能用 0/1,否则 Luban 等工具读取时会丢失布尔语义
|
|
65
|
+
*/
|
|
66
|
+
const convertBooleansInValues = (obj) => {
|
|
67
|
+
if (obj === null || obj === undefined)
|
|
68
|
+
return obj;
|
|
69
|
+
if (Array.isArray(obj))
|
|
70
|
+
return obj.map(convertBooleansInValues);
|
|
71
|
+
if (typeof obj === 'object') {
|
|
72
|
+
const result = {};
|
|
73
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
74
|
+
if (k === 'values' && Array.isArray(v)) {
|
|
75
|
+
// 只在 values 单元格数组中转换 boolean
|
|
76
|
+
result[k] = v.map(row => Array.isArray(row)
|
|
77
|
+
? row.map(cell => (typeof cell === 'boolean' ? (cell ? 'TRUE' : 'FALSE') : cell))
|
|
78
|
+
: row);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
result[k] = convertBooleansInValues(v);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
return obj;
|
|
87
|
+
};
|
|
53
88
|
const sdkFuncCall = async (client, params, options) => {
|
|
54
89
|
const { tool, userAccessToken } = options || {};
|
|
55
90
|
const { sdkName, path, httpMethod } = tool || {};
|
|
@@ -82,19 +117,41 @@ const sdkFuncCall = async (client, params, options) => {
|
|
|
82
117
|
return await client.request({ method: httpMethod, url: filledPath, ...restParams }, ...args);
|
|
83
118
|
};
|
|
84
119
|
}
|
|
85
|
-
|
|
120
|
+
// 对 Sheets values 写入操作,将 boolean 值转换为 0/1(飞书 API 不接受 JSON boolean)
|
|
121
|
+
const isSheetWriteOp = typeof sdkName === 'string' && sdkName.includes('spreadsheetValues');
|
|
122
|
+
const processedParams = isSheetWriteOp && (params === null || params === void 0 ? void 0 : params.data)
|
|
123
|
+
? { ...params, data: convertBooleansInValues(params.data) }
|
|
124
|
+
: params;
|
|
125
|
+
logger_1.logger.warn(`[larkOapiHandler] sdkName=${sdkName} useUAT=${processedParams === null || processedParams === void 0 ? void 0 : processedParams.useUAT} hasToken=${!!userAccessToken} data=${JSON.stringify(processedParams === null || processedParams === void 0 ? void 0 : processedParams.data)}`);
|
|
126
|
+
if (processedParams === null || processedParams === void 0 ? void 0 : processedParams.useUAT) {
|
|
86
127
|
if (!userAccessToken) {
|
|
87
128
|
logger_1.logger.error(`[larkOapiHandler] UserAccessToken is invalid or expired`);
|
|
88
129
|
throw new Error('UserAccessToken is invalid or expired');
|
|
89
130
|
}
|
|
90
|
-
|
|
131
|
+
const response = await func(processedParams, lark.withUserAccessToken(userAccessToken));
|
|
132
|
+
logger_1.logger.warn(`[larkOapiHandler] response=${JSON.stringify(response)}`);
|
|
133
|
+
return response;
|
|
91
134
|
}
|
|
92
|
-
|
|
135
|
+
const response = await func(processedParams);
|
|
136
|
+
logger_1.logger.info(`[larkOapiHandler] response=${JSON.stringify(response)}`);
|
|
137
|
+
return response;
|
|
93
138
|
};
|
|
94
139
|
const larkOapiHandler = async (client, params, options) => {
|
|
95
140
|
var _a, _b;
|
|
96
141
|
try {
|
|
97
142
|
const response = await sdkFuncCall(client, params, options);
|
|
143
|
+
// 当 Feishu API 返回非0错误码时,返回完整响应以便调试
|
|
144
|
+
if ((response === null || response === void 0 ? void 0 : response.code) !== undefined && response.code !== 0) {
|
|
145
|
+
return {
|
|
146
|
+
isError: true,
|
|
147
|
+
content: [
|
|
148
|
+
{
|
|
149
|
+
type: 'text',
|
|
150
|
+
text: JSON.stringify(response),
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
};
|
|
154
|
+
}
|
|
98
155
|
return {
|
|
99
156
|
content: [
|
|
100
157
|
{
|