@alanse/mcp-server-google-workspace 0.2.1 → 1.0.2
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/README.md +250 -17
- package/dist/auth.js +6 -0
- package/dist/index.js +1 -1
- package/dist/lib/calendar-helpers.js +197 -0
- package/dist/lib/document-id-resolver.js +76 -0
- package/dist/lib/drive-helpers.js +263 -0
- package/dist/lib/gmail-helpers.js +204 -0
- package/dist/lib/response-formatter.js +82 -0
- package/dist/lib/validation.js +112 -0
- package/dist/tools/calendar/acl/calendar_acl_insert.js +80 -0
- package/dist/tools/calendar/acl/calendar_acl_list.js +82 -0
- package/dist/tools/calendar/basic/calendar_create_event.js +113 -0
- package/dist/tools/calendar/basic/calendar_delete_event.js +52 -0
- package/dist/tools/calendar/basic/calendar_get_event.js +52 -0
- package/dist/tools/calendar/basic/calendar_list_events.js +86 -0
- package/dist/tools/calendar/basic/calendar_update_event.js +116 -0
- package/dist/tools/calendar/calendarlist/calendar_calendarlist_get.js +73 -0
- package/dist/tools/calendar/calendarlist/calendar_calendarlist_list.js +87 -0
- package/dist/tools/calendar/calendars/calendar_calendars_get.js +52 -0
- package/dist/tools/calendar/calendars/calendar_calendars_insert.js +66 -0
- package/dist/tools/calendar/calendars/calendar_calendars_update.js +85 -0
- package/dist/tools/calendar/colors/calendar_colors_get.js +46 -0
- package/dist/tools/calendar/events_advanced/calendar_events_instances.js +81 -0
- package/dist/tools/calendar/events_advanced/calendar_events_move.js +63 -0
- package/dist/tools/calendar/events_advanced/calendar_events_quickadd.js +52 -0
- package/dist/tools/calendar/freebusy/calendar_freebusy_query.js +69 -0
- package/dist/tools/calendar/settings/calendar_settings_list.js +81 -0
- package/dist/tools/docs/basic/gdocs_create.js +37 -0
- package/dist/tools/docs/basic/gdocs_get_metadata.js +45 -0
- package/dist/tools/docs/basic/gdocs_list_documents.js +59 -0
- package/dist/tools/docs/basic/gdocs_read.js +62 -0
- package/dist/tools/docs/content/gdocs_append_text.js +57 -0
- package/dist/tools/docs/content/gdocs_apply_style.js +86 -0
- package/dist/tools/docs/content/gdocs_create_heading.js +89 -0
- package/dist/tools/docs/content/gdocs_create_list.js +86 -0
- package/dist/tools/docs/content/gdocs_delete_text.js +64 -0
- package/dist/tools/docs/content/gdocs_format_text.js +137 -0
- package/dist/tools/docs/content/gdocs_insert_text.js +62 -0
- package/dist/tools/docs/content/gdocs_replace_text.js +64 -0
- package/dist/tools/docs/content/gdocs_set_alignment.js +76 -0
- package/dist/tools/docs/content/gdocs_update_text.js +78 -0
- package/dist/tools/docs/elements/gdocs_batch_update.js +108 -0
- package/dist/tools/docs/elements/gdocs_create_table.js +73 -0
- package/dist/tools/docs/elements/gdocs_export.js +62 -0
- package/dist/tools/docs/elements/gdocs_insert_image.js +96 -0
- package/dist/tools/docs/elements/gdocs_insert_link.js +77 -0
- package/dist/tools/docs/elements/gdocs_insert_page_break.js +55 -0
- package/dist/tools/docs/elements/gdocs_insert_toc.js +71 -0
- package/dist/tools/docs/elements/gdocs_merge_documents.js +104 -0
- package/dist/tools/docs/elements/gdocs_suggest_mode.js +41 -0
- package/dist/tools/drive/advanced/drive_empty_trash.js +56 -0
- package/dist/tools/drive/advanced/drive_export_file.js +158 -0
- package/dist/tools/drive/advanced/drive_list_revisions.js +80 -0
- package/dist/tools/drive/basic/drive_get_metadata.js +49 -0
- package/dist/tools/drive/basic/drive_list_files.js +76 -0
- package/dist/tools/drive/file/drive_copy_file.js +79 -0
- package/dist/tools/drive/file/drive_create_file.js +72 -0
- package/dist/tools/drive/file/drive_delete_file.js +48 -0
- package/dist/tools/drive/file/drive_move_file.js +79 -0
- package/dist/tools/drive/file/drive_rename_file.js +58 -0
- package/dist/tools/drive/file/drive_update_file.js +106 -0
- package/dist/tools/drive/file/drive_upload_file.js +80 -0
- package/dist/tools/drive/folder/drive_create_folder.js +67 -0
- package/dist/tools/drive/folder/drive_list_folder_contents.js +68 -0
- package/dist/tools/drive/folder/drive_move_to_folder.js +59 -0
- package/dist/tools/drive/permissions/drive_list_permissions.js +115 -0
- package/dist/tools/drive/permissions/drive_remove_permission.js +71 -0
- package/dist/tools/drive/permissions/drive_share_file.js +116 -0
- package/dist/tools/drive/permissions/drive_update_permission.js +79 -0
- package/dist/tools/gmail/basic/gmail_get_message.js +95 -0
- package/dist/tools/gmail/basic/gmail_get_thread.js +46 -0
- package/dist/tools/gmail/basic/gmail_list_labels.js +54 -0
- package/dist/tools/gmail/basic/gmail_search_messages.js +59 -0
- package/dist/tools/gmail/batch/gmail_batch_modify_labels.js +74 -0
- package/dist/tools/gmail/batch/gmail_get_messages_batch.js +120 -0
- package/dist/tools/gmail/batch/gmail_get_threads_batch.js +102 -0
- package/dist/tools/gmail/labels/gmail_manage_label.js +131 -0
- package/dist/tools/gmail/labels/gmail_modify_labels.js +65 -0
- package/dist/tools/gmail/send/gmail_draft_message.js +117 -0
- package/dist/tools/gmail/send/gmail_send_message.js +109 -0
- package/dist/tools/index.js +386 -3
- package/package.json +8 -3
- package/dist/tools/basic/gsheets_add_sheet.js +0 -65
- package/dist/tools/basic/gsheets_copy_sheet.js +0 -56
- package/dist/tools/basic/gsheets_copy_to.js +0 -113
- package/dist/tools/basic/gsheets_create_spreadsheet.js +0 -88
- package/dist/tools/basic/gsheets_delete_columns.js +0 -69
- package/dist/tools/basic/gsheets_delete_rows.js +0 -69
- package/dist/tools/basic/gsheets_delete_sheet.js +0 -56
- package/dist/tools/basic/gsheets_duplicate_sheet.js +0 -72
- package/dist/tools/basic/gsheets_insert_columns.js +0 -69
- package/dist/tools/basic/gsheets_insert_rows.js +0 -69
- package/dist/tools/basic/gsheets_list_sheets.js +0 -53
- package/dist/tools/basic/gsheets_read.js +0 -120
- package/dist/tools/basic/gsheets_rename_sheet.js +0 -64
- package/dist/tools/charts/gsheets_add_bubble.js +0 -176
- package/dist/tools/charts/gsheets_add_candlestick.js +0 -192
- package/dist/tools/charts/gsheets_add_chart.js +0 -162
- package/dist/tools/charts/gsheets_add_combo.js +0 -169
- package/dist/tools/charts/gsheets_add_histogram.js +0 -143
- package/dist/tools/charts/gsheets_add_org_chart.js +0 -160
- package/dist/tools/charts/gsheets_add_treemap.js +0 -177
- package/dist/tools/charts/gsheets_add_waterfall.js +0 -155
- package/dist/tools/charts/gsheets_delete_chart.js +0 -56
- package/dist/tools/charts/gsheets_update_chart.js +0 -118
- package/dist/tools/data/gsheets_append_data.js +0 -68
- package/dist/tools/data/gsheets_batch_clear.js +0 -53
- package/dist/tools/data/gsheets_batch_update.js +0 -81
- package/dist/tools/data/gsheets_clear_data.js +0 -53
- package/dist/tools/data/gsheets_create_filter.js +0 -81
- package/dist/tools/data/gsheets_find_replace.js +0 -124
- package/dist/tools/data/gsheets_set_data_validation.js +0 -153
- package/dist/tools/data/gsheets_sort_range.js +0 -102
- package/dist/tools/data/gsheets_update_cell.js +0 -44
- package/dist/tools/formatting/gsheets_auto_resize.js +0 -75
- package/dist/tools/formatting/gsheets_format_cells.js +0 -161
- package/dist/tools/formatting/gsheets_freeze_columns.js +0 -67
- package/dist/tools/formatting/gsheets_freeze_rows.js +0 -67
- package/dist/tools/formatting/gsheets_merge_cells.js +0 -85
- package/dist/tools/formatting/gsheets_set_number_format.js +0 -116
- package/dist/tools/formatting/gsheets_unmerge_cells.js +0 -79
- package/dist/tools/formatting/gsheets_update_borders.js +0 -212
- package/dist/tools/gdrive/gdrive_read_file.js +0 -77
- package/dist/tools/gdrive/gdrive_search.js +0 -71
- package/dist/tools/gdrive_read_file.js +0 -77
- package/dist/tools/gdrive_search.js +0 -71
- package/dist/tools/gsheets_add_bubble.js +0 -176
- package/dist/tools/gsheets_add_candlestick.js +0 -192
- package/dist/tools/gsheets_add_chart.js +0 -162
- package/dist/tools/gsheets_add_combo.js +0 -169
- package/dist/tools/gsheets_add_conditional_format.js +0 -175
- package/dist/tools/gsheets_add_histogram.js +0 -143
- package/dist/tools/gsheets_add_named_range.js +0 -87
- package/dist/tools/gsheets_add_org_chart.js +0 -160
- package/dist/tools/gsheets_add_protected_range.js +0 -127
- package/dist/tools/gsheets_add_sheet.js +0 -65
- package/dist/tools/gsheets_add_treemap.js +0 -177
- package/dist/tools/gsheets_add_waterfall.js +0 -155
- package/dist/tools/gsheets_append_data.js +0 -68
- package/dist/tools/gsheets_auto_resize.js +0 -75
- package/dist/tools/gsheets_batch_clear.js +0 -53
- package/dist/tools/gsheets_batch_update.js +0 -81
- package/dist/tools/gsheets_clear_data.js +0 -53
- package/dist/tools/gsheets_copy_sheet.js +0 -56
- package/dist/tools/gsheets_copy_to.js +0 -113
- package/dist/tools/gsheets_create_filter.js +0 -81
- package/dist/tools/gsheets_create_spreadsheet.js +0 -88
- package/dist/tools/gsheets_delete_chart.js +0 -56
- package/dist/tools/gsheets_delete_columns.js +0 -69
- package/dist/tools/gsheets_delete_named_range.js +0 -56
- package/dist/tools/gsheets_delete_protected_range.js +0 -56
- package/dist/tools/gsheets_delete_rows.js +0 -69
- package/dist/tools/gsheets_delete_sheet.js +0 -56
- package/dist/tools/gsheets_duplicate_sheet.js +0 -72
- package/dist/tools/gsheets_find_replace.js +0 -124
- package/dist/tools/gsheets_format_cells.js +0 -161
- package/dist/tools/gsheets_freeze_columns.js +0 -67
- package/dist/tools/gsheets_freeze_rows.js +0 -67
- package/dist/tools/gsheets_insert_columns.js +0 -69
- package/dist/tools/gsheets_insert_rows.js +0 -69
- package/dist/tools/gsheets_list_sheets.js +0 -53
- package/dist/tools/gsheets_merge_cells.js +0 -85
- package/dist/tools/gsheets_read.js +0 -120
- package/dist/tools/gsheets_rename_sheet.js +0 -64
- package/dist/tools/gsheets_set_data_validation.js +0 -153
- package/dist/tools/gsheets_set_number_format.js +0 -116
- package/dist/tools/gsheets_sort_range.js +0 -102
- package/dist/tools/gsheets_unmerge_cells.js +0 -79
- package/dist/tools/gsheets_update_borders.js +0 -212
- package/dist/tools/gsheets_update_cell.js +0 -44
- package/dist/tools/gsheets_update_chart.js +0 -118
- package/dist/tools/gsheets_update_named_range.js +0 -112
- package/dist/tools/gsheets_update_protected_range.js +0 -110
- package/dist/tools/protection/gsheets_add_conditional_format.js +0 -175
- package/dist/tools/protection/gsheets_add_named_range.js +0 -87
- package/dist/tools/protection/gsheets_add_protected_range.js +0 -127
- package/dist/tools/protection/gsheets_delete_named_range.js +0 -56
- package/dist/tools/protection/gsheets_delete_protected_range.js +0 -56
- package/dist/tools/protection/gsheets_update_named_range.js +0 -112
- package/dist/tools/protection/gsheets_update_protected_range.js +0 -110
- /package/dist/tools/drive/{drive_read_file.js → basic/drive_read_file.js} +0 -0
- /package/dist/tools/drive/{drive_search.js → basic/drive_search.js} +0 -0
package/dist/tools/index.js
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
|
-
// Drive operations
|
|
2
|
-
import { schema as driveSearchSchema, search } from './drive/drive_search.js';
|
|
3
|
-
import { schema as driveReadFileSchema, readFile } from './drive/drive_read_file.js';
|
|
1
|
+
// Drive - Basic operations
|
|
2
|
+
import { schema as driveSearchSchema, search } from './drive/basic/drive_search.js';
|
|
3
|
+
import { schema as driveReadFileSchema, readFile } from './drive/basic/drive_read_file.js';
|
|
4
|
+
import { schema as driveListFilesSchema, listFiles } from './drive/basic/drive_list_files.js';
|
|
5
|
+
import { schema as driveGetMetadataSchema, getMetadata as driveGetMetadata } from './drive/basic/drive_get_metadata.js';
|
|
6
|
+
// Drive - File operations
|
|
7
|
+
import { schema as driveUploadFileSchema, uploadFile } from './drive/file/drive_upload_file.js';
|
|
8
|
+
import { schema as driveCreateFileSchema, createFile } from './drive/file/drive_create_file.js';
|
|
9
|
+
import { schema as driveDeleteFileSchema, deleteFile } from './drive/file/drive_delete_file.js';
|
|
10
|
+
import { schema as driveCopyFileSchema, copyFile } from './drive/file/drive_copy_file.js';
|
|
11
|
+
import { schema as driveMoveFileSchema, moveFile } from './drive/file/drive_move_file.js';
|
|
12
|
+
import { schema as driveRenameFileSchema, renameFile } from './drive/file/drive_rename_file.js';
|
|
13
|
+
import { schema as driveUpdateFileSchema, updateFile } from './drive/file/drive_update_file.js';
|
|
14
|
+
// Drive - Folder operations
|
|
15
|
+
import { schema as driveCreateFolderSchema, createFolder } from './drive/folder/drive_create_folder.js';
|
|
16
|
+
import { schema as driveListFolderContentsSchema, listFolderContents } from './drive/folder/drive_list_folder_contents.js';
|
|
17
|
+
import { schema as driveMoveToFolderSchema, moveToFolder } from './drive/folder/drive_move_to_folder.js';
|
|
18
|
+
// Drive - Permissions operations
|
|
19
|
+
import { schema as driveShareFileSchema, shareFile } from './drive/permissions/drive_share_file.js';
|
|
20
|
+
import { schema as driveListPermissionsSchema, listPermissions } from './drive/permissions/drive_list_permissions.js';
|
|
21
|
+
import { schema as driveUpdatePermissionSchema, updatePermission } from './drive/permissions/drive_update_permission.js';
|
|
22
|
+
import { schema as driveRemovePermissionSchema, removePermission } from './drive/permissions/drive_remove_permission.js';
|
|
23
|
+
// Drive - Advanced operations
|
|
24
|
+
import { schema as driveExportFileSchema, exportFile } from './drive/advanced/drive_export_file.js';
|
|
25
|
+
import { schema as driveListRevisionsSchema, listRevisions } from './drive/advanced/drive_list_revisions.js';
|
|
26
|
+
import { schema as driveEmptyTrashSchema, emptyTrash } from './drive/advanced/drive_empty_trash.js';
|
|
4
27
|
// Basic operations
|
|
5
28
|
import { schema as gsheetsReadSchema, readSheet } from './sheets/basic/gsheets_read.js';
|
|
6
29
|
import { schema as gsheetsListSheetsSchema, listSheets } from './sheets/basic/gsheets_list_sheets.js';
|
|
@@ -62,7 +85,75 @@ import { schema as gsheetsUpdateDimensionGroupSchema, updateDimensionGroup } fro
|
|
|
62
85
|
import { schema as gsheetsCreateDeveloperMetadataSchema, createDeveloperMetadata } from './sheets/advanced/gsheets_create_developer_metadata.js';
|
|
63
86
|
import { schema as gsheetsUpdateDeveloperMetadataSchema, updateDeveloperMetadata } from './sheets/advanced/gsheets_update_developer_metadata.js';
|
|
64
87
|
import { schema as gsheetsDeleteDeveloperMetadataSchema, deleteDeveloperMetadata } from './sheets/advanced/gsheets_delete_developer_metadata.js';
|
|
88
|
+
// Google Docs - Basic operations
|
|
89
|
+
import { schema as gdocsCreateSchema, createDocument } from './docs/basic/gdocs_create.js';
|
|
90
|
+
import { schema as gdocsReadSchema, readDocument } from './docs/basic/gdocs_read.js';
|
|
91
|
+
import { schema as gdocsGetMetadataSchema, getMetadata } from './docs/basic/gdocs_get_metadata.js';
|
|
92
|
+
import { schema as gdocsListDocumentsSchema, listDocuments } from './docs/basic/gdocs_list_documents.js';
|
|
93
|
+
// Google Docs - Content/Formatting operations
|
|
94
|
+
import { schema as gdocsInsertTextSchema, insertText } from './docs/content/gdocs_insert_text.js';
|
|
95
|
+
import { schema as gdocsUpdateTextSchema, updateText } from './docs/content/gdocs_update_text.js';
|
|
96
|
+
import { schema as gdocsDeleteTextSchema, deleteText } from './docs/content/gdocs_delete_text.js';
|
|
97
|
+
import { schema as gdocsReplaceTextSchema, replaceText } from './docs/content/gdocs_replace_text.js';
|
|
98
|
+
import { schema as gdocsAppendTextSchema, appendText } from './docs/content/gdocs_append_text.js';
|
|
99
|
+
import { schema as gdocsFormatTextSchema, formatText } from './docs/content/gdocs_format_text.js';
|
|
100
|
+
import { schema as gdocsCreateHeadingSchema, createHeading } from './docs/content/gdocs_create_heading.js';
|
|
101
|
+
import { schema as gdocsCreateListSchema, createList } from './docs/content/gdocs_create_list.js';
|
|
102
|
+
import { schema as gdocsSetAlignmentSchema, setAlignment } from './docs/content/gdocs_set_alignment.js';
|
|
103
|
+
import { schema as gdocsApplyStyleSchema, applyStyle } from './docs/content/gdocs_apply_style.js';
|
|
104
|
+
// Google Docs - Elements/Advanced operations
|
|
105
|
+
import { schema as gdocsInsertImageSchema, insertImage } from './docs/elements/gdocs_insert_image.js';
|
|
106
|
+
import { schema as gdocsCreateTableSchema, createTable } from './docs/elements/gdocs_create_table.js';
|
|
107
|
+
import { schema as gdocsInsertPageBreakSchema, insertPageBreak } from './docs/elements/gdocs_insert_page_break.js';
|
|
108
|
+
import { schema as gdocsInsertLinkSchema, insertLink } from './docs/elements/gdocs_insert_link.js';
|
|
109
|
+
import { schema as gdocsInsertTocSchema, insertToc } from './docs/elements/gdocs_insert_toc.js';
|
|
110
|
+
import { schema as gdocsBatchUpdateSchema, batchUpdate as gdocsBatchUpdate } from './docs/elements/gdocs_batch_update.js';
|
|
111
|
+
import { schema as gdocsMergeDocumentsSchema, mergeDocuments } from './docs/elements/gdocs_merge_documents.js';
|
|
112
|
+
import { schema as gdocsExportSchema, exportDocument } from './docs/elements/gdocs_export.js';
|
|
113
|
+
import { schema as gdocsSuggestModeSchema, suggestMode } from './docs/elements/gdocs_suggest_mode.js';
|
|
114
|
+
// Gmail - Basic operations
|
|
115
|
+
import { schema as gmailListLabelsSchema, listLabels } from './gmail/basic/gmail_list_labels.js';
|
|
116
|
+
import { schema as gmailSearchMessagesSchema, searchMessages } from './gmail/basic/gmail_search_messages.js';
|
|
117
|
+
import { schema as gmailGetMessageSchema, getMessage } from './gmail/basic/gmail_get_message.js';
|
|
118
|
+
import { schema as gmailGetThreadSchema, getThread } from './gmail/basic/gmail_get_thread.js';
|
|
119
|
+
// Gmail - Labels operations
|
|
120
|
+
import { schema as gmailModifyLabelsSchema, modifyLabels } from './gmail/labels/gmail_modify_labels.js';
|
|
121
|
+
import { schema as gmailManageLabelSchema, manageLabel } from './gmail/labels/gmail_manage_label.js';
|
|
122
|
+
// Gmail - Send operations
|
|
123
|
+
import { schema as gmailSendMessageSchema, sendMessage } from './gmail/send/gmail_send_message.js';
|
|
124
|
+
import { schema as gmailDraftMessageSchema, draftMessage } from './gmail/send/gmail_draft_message.js';
|
|
125
|
+
// Gmail - Batch operations
|
|
126
|
+
import { schema as gmailGetMessagesBatchSchema, getMessagesBatch } from './gmail/batch/gmail_get_messages_batch.js';
|
|
127
|
+
import { schema as gmailGetThreadsBatchSchema, getThreadsBatch } from './gmail/batch/gmail_get_threads_batch.js';
|
|
128
|
+
import { schema as gmailBatchModifyLabelsSchema, batchModifyLabels } from './gmail/batch/gmail_batch_modify_labels.js';
|
|
129
|
+
// Calendar - Basic operations
|
|
130
|
+
import { schema as calendarListEventsSchema, listEvents } from './calendar/basic/calendar_list_events.js';
|
|
131
|
+
import { schema as calendarGetEventSchema, getEvent } from './calendar/basic/calendar_get_event.js';
|
|
132
|
+
import { schema as calendarCreateEventSchema, createEvent } from './calendar/basic/calendar_create_event.js';
|
|
133
|
+
import { schema as calendarUpdateEventSchema, updateEvent } from './calendar/basic/calendar_update_event.js';
|
|
134
|
+
import { schema as calendarDeleteEventSchema, deleteEvent } from './calendar/basic/calendar_delete_event.js';
|
|
135
|
+
// Calendar - Free/busy operations
|
|
136
|
+
import { schema as calendarFreeBusyQuerySchema, queryFreeBusy } from './calendar/freebusy/calendar_freebusy_query.js';
|
|
137
|
+
// Calendar - CalendarList operations
|
|
138
|
+
import { schema as calendarListListSchema, listCalendarList } from './calendar/calendarlist/calendar_calendarlist_list.js';
|
|
139
|
+
import { schema as calendarListGetSchema, getCalendarListEntry } from './calendar/calendarlist/calendar_calendarlist_get.js';
|
|
140
|
+
// Calendar - Events advanced operations
|
|
141
|
+
import { schema as calendarEventsQuickAddSchema, quickAddEvent } from './calendar/events_advanced/calendar_events_quickadd.js';
|
|
142
|
+
import { schema as calendarEventsInstancesSchema, listEventInstances } from './calendar/events_advanced/calendar_events_instances.js';
|
|
143
|
+
import { schema as calendarEventsMoveSchema, moveEvent } from './calendar/events_advanced/calendar_events_move.js';
|
|
144
|
+
// Calendar - Colors operations
|
|
145
|
+
import { schema as calendarColorsGetSchema, getColors } from './calendar/colors/calendar_colors_get.js';
|
|
146
|
+
// Calendar - Calendars operations
|
|
147
|
+
import { schema as calendarCalendarsInsertSchema, insertCalendar } from './calendar/calendars/calendar_calendars_insert.js';
|
|
148
|
+
import { schema as calendarCalendarsGetSchema, getCalendar } from './calendar/calendars/calendar_calendars_get.js';
|
|
149
|
+
import { schema as calendarCalendarsUpdateSchema, updateCalendar } from './calendar/calendars/calendar_calendars_update.js';
|
|
150
|
+
// Calendar - ACL operations
|
|
151
|
+
import { schema as calendarAclListSchema, listAcl } from './calendar/acl/calendar_acl_list.js';
|
|
152
|
+
import { schema as calendarAclInsertSchema, insertAcl } from './calendar/acl/calendar_acl_insert.js';
|
|
153
|
+
// Calendar - Settings operations
|
|
154
|
+
import { schema as calendarSettingsListSchema, listSettings } from './calendar/settings/calendar_settings_list.js';
|
|
65
155
|
export const tools = [
|
|
156
|
+
// Drive - Basic operations
|
|
66
157
|
{
|
|
67
158
|
...driveSearchSchema,
|
|
68
159
|
handler: search,
|
|
@@ -71,6 +162,87 @@ export const tools = [
|
|
|
71
162
|
...driveReadFileSchema,
|
|
72
163
|
handler: readFile,
|
|
73
164
|
},
|
|
165
|
+
{
|
|
166
|
+
...driveListFilesSchema,
|
|
167
|
+
handler: listFiles,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
...driveGetMetadataSchema,
|
|
171
|
+
handler: driveGetMetadata,
|
|
172
|
+
},
|
|
173
|
+
// Drive - File operations
|
|
174
|
+
{
|
|
175
|
+
...driveUploadFileSchema,
|
|
176
|
+
handler: uploadFile,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
...driveCreateFileSchema,
|
|
180
|
+
handler: createFile,
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
...driveDeleteFileSchema,
|
|
184
|
+
handler: deleteFile,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
...driveCopyFileSchema,
|
|
188
|
+
handler: copyFile,
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
...driveMoveFileSchema,
|
|
192
|
+
handler: moveFile,
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
...driveRenameFileSchema,
|
|
196
|
+
handler: renameFile,
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
...driveUpdateFileSchema,
|
|
200
|
+
handler: updateFile,
|
|
201
|
+
},
|
|
202
|
+
// Drive - Folder operations
|
|
203
|
+
{
|
|
204
|
+
...driveCreateFolderSchema,
|
|
205
|
+
handler: createFolder,
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
...driveListFolderContentsSchema,
|
|
209
|
+
handler: listFolderContents,
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
...driveMoveToFolderSchema,
|
|
213
|
+
handler: moveToFolder,
|
|
214
|
+
},
|
|
215
|
+
// Drive - Permissions operations
|
|
216
|
+
{
|
|
217
|
+
...driveShareFileSchema,
|
|
218
|
+
handler: shareFile,
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
...driveListPermissionsSchema,
|
|
222
|
+
handler: listPermissions,
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
...driveUpdatePermissionSchema,
|
|
226
|
+
handler: updatePermission,
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
...driveRemovePermissionSchema,
|
|
230
|
+
handler: removePermission,
|
|
231
|
+
},
|
|
232
|
+
// Drive - Advanced operations
|
|
233
|
+
{
|
|
234
|
+
...driveExportFileSchema,
|
|
235
|
+
handler: exportFile,
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
...driveListRevisionsSchema,
|
|
239
|
+
handler: listRevisions,
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
...driveEmptyTrashSchema,
|
|
243
|
+
handler: emptyTrash,
|
|
244
|
+
},
|
|
245
|
+
// Google Sheets - Basic operations
|
|
74
246
|
{
|
|
75
247
|
...gsheetsUpdateCellSchema,
|
|
76
248
|
handler: updateCell,
|
|
@@ -290,5 +462,216 @@ export const tools = [
|
|
|
290
462
|
{
|
|
291
463
|
...gsheetsDeleteDeveloperMetadataSchema,
|
|
292
464
|
handler: deleteDeveloperMetadata,
|
|
465
|
+
},
|
|
466
|
+
// Google Docs tools
|
|
467
|
+
{
|
|
468
|
+
...gdocsCreateSchema,
|
|
469
|
+
handler: createDocument,
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
...gdocsReadSchema,
|
|
473
|
+
handler: readDocument,
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
...gdocsGetMetadataSchema,
|
|
477
|
+
handler: getMetadata,
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
...gdocsListDocumentsSchema,
|
|
481
|
+
handler: listDocuments,
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
...gdocsInsertTextSchema,
|
|
485
|
+
handler: insertText,
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
...gdocsUpdateTextSchema,
|
|
489
|
+
handler: updateText,
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
...gdocsDeleteTextSchema,
|
|
493
|
+
handler: deleteText,
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
...gdocsReplaceTextSchema,
|
|
497
|
+
handler: replaceText,
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
...gdocsAppendTextSchema,
|
|
501
|
+
handler: appendText,
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
...gdocsFormatTextSchema,
|
|
505
|
+
handler: formatText,
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
...gdocsCreateHeadingSchema,
|
|
509
|
+
handler: createHeading,
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
...gdocsCreateListSchema,
|
|
513
|
+
handler: createList,
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
...gdocsSetAlignmentSchema,
|
|
517
|
+
handler: setAlignment,
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
...gdocsApplyStyleSchema,
|
|
521
|
+
handler: applyStyle,
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
...gdocsInsertImageSchema,
|
|
525
|
+
handler: insertImage,
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
...gdocsCreateTableSchema,
|
|
529
|
+
handler: createTable,
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
...gdocsInsertPageBreakSchema,
|
|
533
|
+
handler: insertPageBreak,
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
...gdocsInsertLinkSchema,
|
|
537
|
+
handler: insertLink,
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
...gdocsInsertTocSchema,
|
|
541
|
+
handler: insertToc,
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
...gdocsBatchUpdateSchema,
|
|
545
|
+
handler: gdocsBatchUpdate,
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
...gdocsMergeDocumentsSchema,
|
|
549
|
+
handler: mergeDocuments,
|
|
550
|
+
},
|
|
551
|
+
{
|
|
552
|
+
...gdocsExportSchema,
|
|
553
|
+
handler: exportDocument,
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
...gdocsSuggestModeSchema,
|
|
557
|
+
handler: suggestMode,
|
|
558
|
+
},
|
|
559
|
+
// Gmail tools
|
|
560
|
+
{
|
|
561
|
+
...gmailListLabelsSchema,
|
|
562
|
+
handler: listLabels,
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
...gmailSearchMessagesSchema,
|
|
566
|
+
handler: searchMessages,
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
...gmailGetMessageSchema,
|
|
570
|
+
handler: getMessage,
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
...gmailGetThreadSchema,
|
|
574
|
+
handler: getThread,
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
...gmailModifyLabelsSchema,
|
|
578
|
+
handler: modifyLabels,
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
...gmailManageLabelSchema,
|
|
582
|
+
handler: manageLabel,
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
...gmailSendMessageSchema,
|
|
586
|
+
handler: sendMessage,
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
...gmailDraftMessageSchema,
|
|
590
|
+
handler: draftMessage,
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
...gmailGetMessagesBatchSchema,
|
|
594
|
+
handler: getMessagesBatch,
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
...gmailGetThreadsBatchSchema,
|
|
598
|
+
handler: getThreadsBatch,
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
...gmailBatchModifyLabelsSchema,
|
|
602
|
+
handler: batchModifyLabels,
|
|
603
|
+
},
|
|
604
|
+
// Calendar tools
|
|
605
|
+
{
|
|
606
|
+
...calendarListEventsSchema,
|
|
607
|
+
handler: listEvents,
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
...calendarGetEventSchema,
|
|
611
|
+
handler: getEvent,
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
...calendarCreateEventSchema,
|
|
615
|
+
handler: createEvent,
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
...calendarUpdateEventSchema,
|
|
619
|
+
handler: updateEvent,
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
...calendarDeleteEventSchema,
|
|
623
|
+
handler: deleteEvent,
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
...calendarFreeBusyQuerySchema,
|
|
627
|
+
handler: queryFreeBusy,
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
...calendarListListSchema,
|
|
631
|
+
handler: listCalendarList,
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
...calendarListGetSchema,
|
|
635
|
+
handler: getCalendarListEntry,
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
...calendarEventsQuickAddSchema,
|
|
639
|
+
handler: quickAddEvent,
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
...calendarEventsInstancesSchema,
|
|
643
|
+
handler: listEventInstances,
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
...calendarEventsMoveSchema,
|
|
647
|
+
handler: moveEvent,
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
...calendarColorsGetSchema,
|
|
651
|
+
handler: getColors,
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
...calendarCalendarsInsertSchema,
|
|
655
|
+
handler: insertCalendar,
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
...calendarCalendarsGetSchema,
|
|
659
|
+
handler: getCalendar,
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
...calendarCalendarsUpdateSchema,
|
|
663
|
+
handler: updateCalendar,
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
...calendarAclListSchema,
|
|
667
|
+
handler: listAcl,
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
...calendarAclInsertSchema,
|
|
671
|
+
handler: insertAcl,
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
...calendarSettingsListSchema,
|
|
675
|
+
handler: listSettings,
|
|
293
676
|
}
|
|
294
677
|
];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alanse/mcp-server-google-workspace",
|
|
3
|
-
"version": "0.2
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "The most comprehensive MCP server for Google Workspace - Complete integration for Sheets (57 tools), Drive, and future Docs, Calendar, Forms support",
|
|
5
5
|
"license": "Elastic-2.0",
|
|
6
6
|
"author": "Alanse inc",
|
|
@@ -39,16 +39,21 @@
|
|
|
39
39
|
"test": "vitest run",
|
|
40
40
|
"test:watch": "vitest",
|
|
41
41
|
"test:ui": "vitest --ui",
|
|
42
|
-
"test:coverage": "vitest run --coverage"
|
|
42
|
+
"test:coverage": "vitest run --coverage",
|
|
43
|
+
"inspect": "npx @modelcontextprotocol/inspector node dist/index.js"
|
|
43
44
|
},
|
|
44
45
|
"dependencies": {
|
|
45
46
|
"@google-cloud/local-auth": "^3.0.1",
|
|
46
47
|
"@modelcontextprotocol/sdk": "0.5.0",
|
|
47
48
|
"dotenv": "^16.5.0",
|
|
48
|
-
"googleapis": "^144.0.0"
|
|
49
|
+
"googleapis": "^144.0.0",
|
|
50
|
+
"nodemailer": "^6.9.16",
|
|
51
|
+
"html-to-text": "^9.0.5"
|
|
49
52
|
},
|
|
50
53
|
"devDependencies": {
|
|
51
54
|
"@types/node": "^22.9.3",
|
|
55
|
+
"@types/nodemailer": "^6.4.17",
|
|
56
|
+
"@types/html-to-text": "^9.0.4",
|
|
52
57
|
"@vitest/ui": "^4.0.16",
|
|
53
58
|
"shx": "^0.3.4",
|
|
54
59
|
"typescript": "^5.6.2",
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { google } from "googleapis";
|
|
2
|
-
export const schema = {
|
|
3
|
-
name: "gsheets_add_sheet",
|
|
4
|
-
description: "Add a new sheet (tab) to a Google Spreadsheet",
|
|
5
|
-
inputSchema: {
|
|
6
|
-
type: "object",
|
|
7
|
-
properties: {
|
|
8
|
-
spreadsheetId: {
|
|
9
|
-
type: "string",
|
|
10
|
-
description: "The ID of the spreadsheet",
|
|
11
|
-
},
|
|
12
|
-
title: {
|
|
13
|
-
type: "string",
|
|
14
|
-
description: "The name of the new sheet",
|
|
15
|
-
},
|
|
16
|
-
index: {
|
|
17
|
-
type: "number",
|
|
18
|
-
description: "Optional position index (0-based) where the sheet should be inserted",
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
required: ["spreadsheetId", "title"],
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
export async function addSheet(args) {
|
|
25
|
-
try {
|
|
26
|
-
const sheets = google.sheets("v4");
|
|
27
|
-
const request = {
|
|
28
|
-
addSheet: {
|
|
29
|
-
properties: {
|
|
30
|
-
title: args.title,
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
if (args.index !== undefined) {
|
|
35
|
-
request.addSheet.properties.index = args.index;
|
|
36
|
-
}
|
|
37
|
-
const response = await sheets.spreadsheets.batchUpdate({
|
|
38
|
-
spreadsheetId: args.spreadsheetId,
|
|
39
|
-
requestBody: {
|
|
40
|
-
requests: [request],
|
|
41
|
-
},
|
|
42
|
-
});
|
|
43
|
-
const addedSheet = response.data.replies?.[0]?.addSheet?.properties;
|
|
44
|
-
return {
|
|
45
|
-
content: [
|
|
46
|
-
{
|
|
47
|
-
type: "text",
|
|
48
|
-
text: `Successfully added sheet "${addedSheet?.title}" (ID: ${addedSheet?.sheetId}, Index: ${addedSheet?.index})`,
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
isError: false,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
return {
|
|
56
|
-
content: [
|
|
57
|
-
{
|
|
58
|
-
type: "text",
|
|
59
|
-
text: `Error adding sheet: ${error.message}`,
|
|
60
|
-
},
|
|
61
|
-
],
|
|
62
|
-
isError: true,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { google } from "googleapis";
|
|
2
|
-
export const schema = {
|
|
3
|
-
name: "gsheets_copy_sheet",
|
|
4
|
-
description: "Copy a sheet to another spreadsheet or within the same spreadsheet",
|
|
5
|
-
inputSchema: {
|
|
6
|
-
type: "object",
|
|
7
|
-
properties: {
|
|
8
|
-
sourceSpreadsheetId: {
|
|
9
|
-
type: "string",
|
|
10
|
-
description: "The ID of the source spreadsheet",
|
|
11
|
-
},
|
|
12
|
-
sourceSheetId: {
|
|
13
|
-
type: "number",
|
|
14
|
-
description: "The ID of the sheet to copy",
|
|
15
|
-
},
|
|
16
|
-
destinationSpreadsheetId: {
|
|
17
|
-
type: "string",
|
|
18
|
-
description: "The ID of the destination spreadsheet",
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
required: ["sourceSpreadsheetId", "sourceSheetId", "destinationSpreadsheetId"],
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
export async function copySheet(args) {
|
|
25
|
-
const sheets = google.sheets("v4");
|
|
26
|
-
try {
|
|
27
|
-
const response = await sheets.spreadsheets.sheets.copyTo({
|
|
28
|
-
spreadsheetId: args.sourceSpreadsheetId,
|
|
29
|
-
sheetId: args.sourceSheetId,
|
|
30
|
-
requestBody: {
|
|
31
|
-
destinationSpreadsheetId: args.destinationSpreadsheetId,
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
const copiedSheet = response.data;
|
|
35
|
-
return {
|
|
36
|
-
content: [
|
|
37
|
-
{
|
|
38
|
-
type: "text",
|
|
39
|
-
text: `Successfully copied sheet to destination. New sheet ID: ${copiedSheet.sheetId}, Title: "${copiedSheet.title}"`,
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
isError: false,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
return {
|
|
47
|
-
content: [
|
|
48
|
-
{
|
|
49
|
-
type: "text",
|
|
50
|
-
text: `Error copying sheet: ${error.message}`,
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
isError: true,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { google } from "googleapis";
|
|
2
|
-
export const schema = {
|
|
3
|
-
name: "gsheets_copy_to",
|
|
4
|
-
description: "Copy data from one range to another range using cut/paste",
|
|
5
|
-
inputSchema: {
|
|
6
|
-
type: "object",
|
|
7
|
-
properties: {
|
|
8
|
-
spreadsheetId: {
|
|
9
|
-
type: "string",
|
|
10
|
-
description: "The ID of the spreadsheet",
|
|
11
|
-
},
|
|
12
|
-
sourceSheetId: {
|
|
13
|
-
type: "number",
|
|
14
|
-
description: "The ID of the source sheet",
|
|
15
|
-
},
|
|
16
|
-
sourceStartRow: {
|
|
17
|
-
type: "number",
|
|
18
|
-
description: "Source starting row index (0-based)",
|
|
19
|
-
},
|
|
20
|
-
sourceStartColumn: {
|
|
21
|
-
type: "number",
|
|
22
|
-
description: "Source starting column index (0-based)",
|
|
23
|
-
},
|
|
24
|
-
sourceEndRow: {
|
|
25
|
-
type: "number",
|
|
26
|
-
description: "Source ending row index (exclusive, 0-based)",
|
|
27
|
-
},
|
|
28
|
-
sourceEndColumn: {
|
|
29
|
-
type: "number",
|
|
30
|
-
description: "Source ending column index (exclusive, 0-based)",
|
|
31
|
-
},
|
|
32
|
-
destinationSheetId: {
|
|
33
|
-
type: "number",
|
|
34
|
-
description: "The ID of the destination sheet",
|
|
35
|
-
},
|
|
36
|
-
destinationStartRow: {
|
|
37
|
-
type: "number",
|
|
38
|
-
description: "Destination starting row index (0-based)",
|
|
39
|
-
},
|
|
40
|
-
destinationStartColumn: {
|
|
41
|
-
type: "number",
|
|
42
|
-
description: "Destination starting column index (0-based)",
|
|
43
|
-
},
|
|
44
|
-
pasteType: {
|
|
45
|
-
type: "string",
|
|
46
|
-
enum: ["NORMAL", "VALUES", "FORMAT", "FORMULA"],
|
|
47
|
-
description: "What to paste (default: NORMAL - all data)",
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
required: [
|
|
51
|
-
"spreadsheetId",
|
|
52
|
-
"sourceSheetId",
|
|
53
|
-
"sourceStartRow",
|
|
54
|
-
"sourceStartColumn",
|
|
55
|
-
"sourceEndRow",
|
|
56
|
-
"sourceEndColumn",
|
|
57
|
-
"destinationSheetId",
|
|
58
|
-
"destinationStartRow",
|
|
59
|
-
"destinationStartColumn",
|
|
60
|
-
],
|
|
61
|
-
},
|
|
62
|
-
};
|
|
63
|
-
export async function copyTo(args) {
|
|
64
|
-
const sheets = google.sheets("v4");
|
|
65
|
-
try {
|
|
66
|
-
await sheets.spreadsheets.batchUpdate({
|
|
67
|
-
spreadsheetId: args.spreadsheetId,
|
|
68
|
-
requestBody: {
|
|
69
|
-
requests: [
|
|
70
|
-
{
|
|
71
|
-
copyPaste: {
|
|
72
|
-
source: {
|
|
73
|
-
sheetId: args.sourceSheetId,
|
|
74
|
-
startRowIndex: args.sourceStartRow,
|
|
75
|
-
endRowIndex: args.sourceEndRow,
|
|
76
|
-
startColumnIndex: args.sourceStartColumn,
|
|
77
|
-
endColumnIndex: args.sourceEndColumn,
|
|
78
|
-
},
|
|
79
|
-
destination: {
|
|
80
|
-
sheetId: args.destinationSheetId,
|
|
81
|
-
startRowIndex: args.destinationStartRow,
|
|
82
|
-
startColumnIndex: args.destinationStartColumn,
|
|
83
|
-
},
|
|
84
|
-
pasteType: args.pasteType || "NORMAL",
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
],
|
|
88
|
-
},
|
|
89
|
-
});
|
|
90
|
-
const sourceRange = `R${args.sourceStartRow}C${args.sourceStartColumn}:R${args.sourceEndRow - 1}C${args.sourceEndColumn - 1}`;
|
|
91
|
-
const destRange = `R${args.destinationStartRow}C${args.destinationStartColumn}`;
|
|
92
|
-
return {
|
|
93
|
-
content: [
|
|
94
|
-
{
|
|
95
|
-
type: "text",
|
|
96
|
-
text: `Successfully copied data from sheet ${args.sourceSheetId} (${sourceRange}) to sheet ${args.destinationSheetId} (${destRange})`,
|
|
97
|
-
},
|
|
98
|
-
],
|
|
99
|
-
isError: false,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
catch (error) {
|
|
103
|
-
return {
|
|
104
|
-
content: [
|
|
105
|
-
{
|
|
106
|
-
type: "text",
|
|
107
|
-
text: `Error copying data: ${error.message}`,
|
|
108
|
-
},
|
|
109
|
-
],
|
|
110
|
-
isError: true,
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
}
|