@pipedream/google_drive 1.12.2 → 2.1.0

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.
Files changed (69) hide show
  1. package/actions/add-comment/add-comment.mjs +1 -1
  2. package/actions/add-file-sharing-preference/add-file-sharing-preference.mjs +1 -1
  3. package/actions/copy-file/copy-file.mjs +1 -1
  4. package/actions/create-file-from-template/create-file-from-template.mjs +1 -1
  5. package/actions/create-file-from-text/create-file-from-text.mjs +1 -1
  6. package/actions/create-folder/create-folder.mjs +1 -1
  7. package/actions/create-shared-drive/create-shared-drive.mjs +1 -1
  8. package/actions/create-text-file/create-text-file.mjs +1 -1
  9. package/actions/delete-comment/delete-comment.mjs +1 -1
  10. package/actions/delete-file/delete-file.mjs +1 -1
  11. package/actions/delete-reply/delete-reply.mjs +1 -1
  12. package/actions/delete-shared-drive/delete-shared-drive.mjs +1 -1
  13. package/actions/download-file/download-file.mjs +142 -80
  14. package/actions/find-file/find-file.mjs +1 -1
  15. package/actions/find-folder/find-folder.mjs +1 -1
  16. package/actions/find-forms/find-forms.mjs +1 -1
  17. package/actions/find-spreadsheets/find-spreadsheets.mjs +1 -1
  18. package/actions/get-comment/get-comment.mjs +1 -1
  19. package/actions/get-current-user/get-current-user.mjs +1 -1
  20. package/actions/get-file/get-file.mjs +1 -1
  21. package/actions/get-file-by-id/get-file-by-id.mjs +1 -1
  22. package/actions/get-folder-id-for-path/get-folder-id-for-path.mjs +1 -1
  23. package/actions/get-reply/get-reply.mjs +1 -1
  24. package/actions/get-shared-drive/get-shared-drive.mjs +1 -1
  25. package/actions/get-user-details/get-user-details.mjs +1 -1
  26. package/actions/is-folder-ancestor/is-folder-ancestor.mjs +1 -1
  27. package/actions/list-access-proposals/list-access-proposals.mjs +1 -1
  28. package/actions/list-comments/list-comments.mjs +59 -10
  29. package/actions/list-files/list-files.mjs +69 -25
  30. package/actions/list-mime-type-options/list-mime-type-options.mjs +1 -1
  31. package/actions/list-permissions/list-permissions.mjs +1 -1
  32. package/actions/list-replies/list-replies.mjs +1 -1
  33. package/actions/list-shared-drives/list-shared-drives.mjs +1 -1
  34. package/actions/list-theme-id-options/list-theme-id-options.mjs +1 -1
  35. package/actions/move-file/move-file.mjs +1 -1
  36. package/actions/move-file-to-trash/move-file-to-trash.mjs +1 -1
  37. package/actions/remove-file-sharing-permission/remove-file-sharing-permission.mjs +1 -1
  38. package/actions/remove-sharing/remove-sharing.mjs +1 -1
  39. package/actions/reply-to-comment/reply-to-comment.mjs +1 -1
  40. package/actions/resolve-access-proposal/resolve-access-proposal.mjs +1 -1
  41. package/actions/resolve-comment/resolve-comment.mjs +1 -1
  42. package/actions/search-files/search-files.mjs +1 -1
  43. package/actions/search-shared-drives/search-shared-drives.mjs +1 -1
  44. package/actions/share-file/share-file.mjs +1 -1
  45. package/actions/trash-file/trash-file.mjs +1 -1
  46. package/actions/update-comment/update-comment.mjs +1 -1
  47. package/actions/update-file/update-file.mjs +1 -1
  48. package/actions/update-reply/update-reply.mjs +1 -1
  49. package/actions/update-shared-drive/update-shared-drive.mjs +1 -1
  50. package/actions/upload-file/upload-file.mjs +1 -1
  51. package/common/constants.mjs +15 -0
  52. package/common/utils.mjs +48 -0
  53. package/package.json +1 -1
  54. package/sources/changes-to-files-in-drive/changes-to-files-in-drive.mjs +1 -1
  55. package/sources/changes-to-specific-files/changes-to-specific-files.mjs +1 -1
  56. package/sources/changes-to-specific-files-shared-drive/changes-to-specific-files-shared-drive.mjs +1 -1
  57. package/sources/new-access-proposal/new-access-proposal.mjs +1 -1
  58. package/sources/new-files-instant/new-files-instant.mjs +1 -1
  59. package/sources/new-files-instant-polling/new-files-instant-polling.mjs +1 -1
  60. package/sources/new-files-shared-drive/new-files-shared-drive.mjs +1 -1
  61. package/sources/new-or-modified-comments/new-or-modified-comments.mjs +1 -1
  62. package/sources/new-or-modified-comments-polling/new-or-modified-comments-polling.mjs +1 -1
  63. package/sources/new-or-modified-files/new-or-modified-files.mjs +1 -1
  64. package/sources/new-or-modified-files-polling/new-or-modified-files-polling.mjs +1 -1
  65. package/sources/new-or-modified-folders/new-or-modified-folders.mjs +1 -1
  66. package/sources/new-or-modified-folders-polling/new-or-modified-folders-polling.mjs +1 -1
  67. package/sources/new-shared-drive/new-shared-drive.mjs +1 -1
  68. package/sources/new-spreadsheet/new-spreadsheet.mjs +1 -1
  69. package/sources/new-spreadsheet-polling/new-spreadsheet-polling.mjs +1 -1
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-add-comment",
5
5
  name: "Add Comment",
6
6
  description: "Add an unanchored comment to a Google Doc (general feedback, no text highlighting). [See the documentation](https://developers.google.com/workspace/drive/api/reference/rest/v3/comments/create)",
7
- version: "0.1.8",
7
+ version: "0.1.9",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -20,7 +20,7 @@ export default {
20
20
  name: "Share File or Folder",
21
21
  description:
22
22
  "Add a [sharing permission](https://support.google.com/drive/answer/7166529) to the sharing preferences of a file or folder and provide a sharing URL. [See the documentation](https://developers.google.com/drive/api/v3/reference/permissions/create)",
23
- version: "0.2.16",
23
+ version: "0.2.17",
24
24
  annotations: {
25
25
  destructiveHint: false,
26
26
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-copy-file",
5
5
  name: "Copy File",
6
6
  description: "Create a copy of the specified file. [See the documentation](https://developers.google.com/drive/api/v3/reference/files/copy) for more information",
7
- version: "0.1.23",
7
+ version: "0.1.24",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -9,7 +9,7 @@ export default {
9
9
  key: "google_drive-create-file-from-template",
10
10
  name: "Create New File From Template",
11
11
  description: "Create a new Google Docs file from a template. Optionally include placeholders in the template document that will get replaced from this action. [See documentation](https://www.npmjs.com/package/google-docs-mustaches)",
12
- version: "0.1.26",
12
+ version: "0.1.27",
13
13
  annotations: {
14
14
  destructiveHint: true,
15
15
  openWorldHint: true,
@@ -5,7 +5,7 @@ export default {
5
5
  key: "google_drive-create-file-from-text",
6
6
  name: "Create New File From Text",
7
7
  description: "Create a new file from plain text. [See the documentation](https://developers.google.com/drive/api/v3/reference/files/create) for more information",
8
- version: "0.2.16",
8
+ version: "0.2.17",
9
9
  annotations: {
10
10
  destructiveHint: false,
11
11
  openWorldHint: true,
@@ -13,7 +13,7 @@ export default {
13
13
  key: "google_drive-create-folder",
14
14
  name: "Create Folder",
15
15
  description: "Create a new empty folder. [See the documentation](https://developers.google.com/drive/api/v3/reference/files/create) for more information",
16
- version: "0.1.24",
16
+ version: "0.1.25",
17
17
  annotations: {
18
18
  destructiveHint: false,
19
19
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-create-shared-drive",
5
5
  name: "Create Shared Drive",
6
6
  description: "Create a new shared drive. [See the documentation](https://developers.google.com/drive/api/v3/reference/drives/create) for more information",
7
- version: "0.1.24",
7
+ version: "0.1.25",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -12,7 +12,7 @@ export default {
12
12
  + " `mimeType = 'application/vnd.google-apps.folder'` to find the folder ID first."
13
13
  + " Supported content formats: plain text, Markdown, HTML, Rich Text, CSV."
14
14
  + " [See the documentation](https://developers.google.com/drive/api/v3/reference/files/create)",
15
- version: "0.0.2",
15
+ version: "0.0.3",
16
16
  type: "action",
17
17
  annotations: {
18
18
  destructiveHint: false,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-delete-comment",
5
5
  name: "Delete Comment",
6
6
  description: "Delete a specific comment (Requires ownership or permissions). [See the documentation](https://developers.google.com/workspace/drive/api/reference/rest/v3/comments/delete)",
7
- version: "0.0.12",
7
+ version: "0.0.13",
8
8
  annotations: {
9
9
  destructiveHint: true,
10
10
  openWorldHint: true,
@@ -5,7 +5,7 @@ export default {
5
5
  name: "Delete File",
6
6
  description:
7
7
  "Permanently delete a file or folder without moving it to the trash. [See the documentation](https://developers.google.com/drive/api/v3/reference/files/delete) for more information",
8
- version: "0.1.24",
8
+ version: "0.1.25",
9
9
  annotations: {
10
10
  destructiveHint: true,
11
11
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-delete-reply",
5
5
  name: "Delete Reply",
6
6
  description: "Delete a reply on a specific comment. [See the documentation](https://developers.google.com/workspace/drive/api/reference/rest/v3/replies/delete) for more information",
7
- version: "0.0.9",
7
+ version: "0.0.10",
8
8
  annotations: {
9
9
  destructiveHint: true,
10
10
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-delete-shared-drive",
5
5
  name: "Delete Shared Drive",
6
6
  description: "Delete a shared drive without any content. [See the documentation](https://developers.google.com/drive/api/v3/reference/drives/delete) for more information",
7
- version: "0.1.23",
7
+ version: "0.1.24",
8
8
  annotations: {
9
9
  destructiveHint: true,
10
10
  openWorldHint: true,
@@ -1,3 +1,4 @@
1
+ import { ConfigurationError } from "@pipedream/platform";
1
2
  import fs from "fs";
2
3
  import stream from "stream";
3
4
  import { promisify } from "util";
@@ -24,14 +25,15 @@ const SHORTCUT_MIME_TYPE = "application/vnd.google-apps.shortcut";
24
25
  export default {
25
26
  key: "google_drive-download-file",
26
27
  name: "Download File",
27
- description: "Download a file from Google Drive to the `/tmp` directory or return its contents as a buffer."
28
+ description: "Download one or more files from Google Drive to the `/tmp` directory or return their contents as buffers."
29
+ + " Select multiple files to download a batch in a single run."
28
30
  + " Use to fetch a file's contents for processing in downstream steps — e.g., parsing a CSV, extracting text from a PDF, or re-uploading to another service."
29
31
  + " For Google Workspace files (Docs, Sheets, Slides, Drawings, Apps Script), exports to an Office-compatible format by default:"
30
32
  + " Docs → `.docx`, Sheets → `.xlsx`, Slides → `.pptx`, Drawings → PNG, Apps Script → JSON."
31
33
  + " Pass `mimeType` to force a specific format. Shortcuts are resolved to their target automatically."
32
34
  + " Folders, Forms, and My Maps cannot be downloaded via this action."
33
35
  + " [See the documentation](https://developers.google.com/drive/api/v3/manage-downloads)",
34
- version: "0.1.27",
36
+ version: "0.2.1",
35
37
  annotations: {
36
38
  destructiveHint: false,
37
39
  openWorldHint: true,
@@ -48,6 +50,19 @@ export default {
48
50
  description: "The shared drive the file is in, if any. Leave empty for files in My Drive.",
49
51
  optional: true,
50
52
  },
53
+ fileIds: {
54
+ propDefinition: [
55
+ googleDrive,
56
+ "fileId",
57
+ (c) => ({
58
+ drive: c.drive,
59
+ }),
60
+ ],
61
+ type: "string[]",
62
+ label: "Files",
63
+ description: "The Google Drive file(s) to download. Select one or more files to download a batch in a single run. Accepts file IDs (opaque Drive identifiers). Shortcuts are resolved to their target automatically.",
64
+ optional: true,
65
+ },
51
66
  fileId: {
52
67
  propDefinition: [
53
68
  googleDrive,
@@ -56,7 +71,8 @@ export default {
56
71
  drive: c.drive,
57
72
  }),
58
73
  ],
59
- description: "The Google Drive file to download. Accepts a file ID (opaque Drive identifier). If a shortcut is passed, the target file is resolved and downloaded automatically.",
74
+ description: "A single Google Drive file to download. Kept for backwards compatibility — prefer `Files` for new configurations. If both are set, this file is included alongside the ones in `Files`.",
75
+ optional: true,
60
76
  },
61
77
  filePath: {
62
78
  type: "string",
@@ -82,7 +98,7 @@ export default {
82
98
  `),
83
99
  optional: true,
84
100
  async options() {
85
- const fileId = this.fileId;
101
+ const fileId = this.fileId ?? this.fileIds?.[0];
86
102
  if (!fileId) {
87
103
  return googleWorkspaceExportFormats;
88
104
  }
@@ -127,104 +143,150 @@ export default {
127
143
  },
128
144
  },
129
145
  async run({ $ }) {
130
- let fileMetadata = await this.googleDrive.getFile(this.fileId, {
131
- fields: "name,mimeType,shortcutDetails,webViewLink",
132
- });
133
-
134
- // Shortcuts point at a target file; resolve and download the target instead.
135
- let downloadFileId = this.fileId;
136
- let resolvedFromShortcut = false;
137
- if (fileMetadata.mimeType === SHORTCUT_MIME_TYPE) {
138
- const targetId = fileMetadata.shortcutDetails?.targetId;
139
- if (!targetId) {
140
- throw new Error(`Shortcut "${fileMetadata.name}" has no target file and cannot be downloaded.`);
141
- }
142
- downloadFileId = targetId;
143
- resolvedFromShortcut = true;
144
- fileMetadata = await this.googleDrive.getFile(targetId, {
145
- fields: "name,mimeType,webViewLink",
146
- });
147
- }
146
+ // Combine the batch input (`fileIds`) with the legacy single `fileId`, keeping
147
+ // order and dropping duplicates so the same file isn't downloaded twice.
148
+ const requestedIds = [
149
+ ...(this.fileIds ?? []),
150
+ ...(this.fileId
151
+ ? [
152
+ this.fileId,
153
+ ]
154
+ : []),
155
+ ];
156
+ const fileIds = [
157
+ ...new Set(requestedIds),
158
+ ];
148
159
 
149
- const sourceMimeType = fileMetadata.mimeType;
150
-
151
- if (unsupportedWorkspaceMimes[sourceMimeType]) {
152
- throw new Error(
153
- `Cannot download file of type "${sourceMimeType}": ${unsupportedWorkspaceMimes[sourceMimeType]}`,
154
- );
160
+ if (fileIds.length === 0) {
161
+ throw new ConfigurationError("Select at least one file to download (`Files` or `File`).");
162
+ }
163
+ if (fileIds.length > 1 && this.filePath) {
164
+ throw new ConfigurationError("`Destination File Path` can only be used when downloading a single file. Remove it to download multiple files (each saves to `/tmp/<file name>`).");
155
165
  }
156
166
 
157
- const isWorkspaceDocument = sourceMimeType.includes(GOOGLE_DRIVE_MIME_TYPE_PREFIX);
167
+ const pipeline = promisify(stream.pipeline);
168
+
169
+ // Downloads a single file (resolving shortcuts + Workspace export formats),
170
+ // either writing it to /tmp or returning its contents as a buffer.
171
+ const downloadOne = async (requestedFileId) => {
172
+ let fileMetadata = await this.googleDrive.getFile(requestedFileId, {
173
+ fields: "name,mimeType,shortcutDetails,webViewLink",
174
+ });
158
175
 
159
- // Fallback: user value -> static default -> runtime getExportFormats().
160
- let effectiveMimeType = this.mimeType;
161
- if (isWorkspaceDocument && !effectiveMimeType) {
162
- effectiveMimeType = defaultExportMimeBySource[sourceMimeType];
163
- if (!effectiveMimeType) {
164
- const exportFormats = await this.googleDrive.getExportFormats();
165
- effectiveMimeType = exportFormats[sourceMimeType]?.[0];
176
+ // Shortcuts point at a target file; resolve and download the target instead.
177
+ let downloadFileId = requestedFileId;
178
+ let resolvedFromShortcut = false;
179
+ if (fileMetadata.mimeType === SHORTCUT_MIME_TYPE) {
180
+ const targetId = fileMetadata.shortcutDetails?.targetId;
181
+ if (!targetId) {
182
+ throw new Error(`Shortcut "${fileMetadata.name}" has no target file and cannot be downloaded.`);
183
+ }
184
+ downloadFileId = targetId;
185
+ resolvedFromShortcut = true;
186
+ fileMetadata = await this.googleDrive.getFile(targetId, {
187
+ fields: "name,mimeType,webViewLink",
188
+ });
166
189
  }
167
- if (!effectiveMimeType) {
190
+
191
+ const sourceMimeType = fileMetadata.mimeType;
192
+
193
+ if (unsupportedWorkspaceMimes[sourceMimeType]) {
168
194
  throw new Error(
169
- `No export format available for "${sourceMimeType}". Set Conversion Format explicitly.`,
195
+ `Cannot download file of type "${sourceMimeType}": ${unsupportedWorkspaceMimes[sourceMimeType]}`,
170
196
  );
171
197
  }
172
- }
173
198
 
174
- // See https://developers.google.com/drive/api/v3/mime-types for Google MIME types.
175
- const file = isWorkspaceDocument
176
- ? await this.googleDrive.downloadWorkspaceFile(downloadFileId, {
177
- mimeType: effectiveMimeType,
178
- })
179
- : await this.googleDrive.getFile(downloadFileId, {
180
- alt: "media",
181
- });
199
+ const isWorkspaceDocument = sourceMimeType.includes(GOOGLE_DRIVE_MIME_TYPE_PREFIX);
200
+
201
+ // Fallback: user value -> static default -> runtime getExportFormats().
202
+ let effectiveMimeType = this.mimeType;
203
+ if (isWorkspaceDocument && !effectiveMimeType) {
204
+ effectiveMimeType = defaultExportMimeBySource[sourceMimeType];
205
+ if (!effectiveMimeType) {
206
+ const exportFormats = await this.googleDrive.getExportFormats();
207
+ effectiveMimeType = exportFormats[sourceMimeType]?.[0];
208
+ }
209
+ if (!effectiveMimeType) {
210
+ throw new Error(
211
+ `No export format available for "${sourceMimeType}". Set Conversion Format explicitly.`,
212
+ );
213
+ }
214
+ }
182
215
 
183
- const summaryPrefix = resolvedFromShortcut
184
- ? "Resolved shortcut and downloaded"
185
- : "Successfully downloaded";
216
+ // See https://developers.google.com/drive/api/v3/mime-types for Google MIME types.
217
+ const file = isWorkspaceDocument
218
+ ? await this.googleDrive.downloadWorkspaceFile(downloadFileId, {
219
+ mimeType: effectiveMimeType,
220
+ })
221
+ : await this.googleDrive.getFile(downloadFileId, {
222
+ alt: "media",
223
+ });
186
224
 
187
- if (this.getBufferResponse) {
188
- $.export("$summary", `${summaryPrefix} raw content for file "${fileMetadata.name}"`);
225
+ if (this.getBufferResponse) {
226
+ const chunks = [];
227
+ for await (const chunk of file) {
228
+ chunks.push(chunk);
229
+ }
230
+ const buffer = Buffer.concat(chunks);
189
231
 
190
- const chunks = [];
191
- for await (const chunk of file) {
192
- chunks.push(chunk);
232
+ return {
233
+ fileId: requestedFileId,
234
+ fileMetadata,
235
+ webViewLink: fileMetadata.webViewLink,
236
+ content: buffer,
237
+ resolvedFromShortcut,
238
+ };
193
239
  }
194
- const buffer = Buffer.concat(chunks);
240
+
241
+ let filePath;
242
+ if (this.filePath) {
243
+ filePath = this.filePath.includes("tmp/")
244
+ ? this.filePath
245
+ : `/tmp/${this.filePath}`;
246
+ } else {
247
+ let defaultName = fileMetadata.name;
248
+ if (isWorkspaceDocument) {
249
+ const ext = extensionByMime[effectiveMimeType];
250
+ if (ext && !defaultName.toLowerCase().endsWith(`.${ext.toLowerCase()}`)) {
251
+ defaultName = `${defaultName}.${ext}`;
252
+ }
253
+ }
254
+ filePath = `/tmp/${defaultName}`;
255
+ }
256
+
257
+ await pipeline(file, fs.createWriteStream(filePath));
195
258
 
196
259
  return {
197
- fileId: this.fileId,
260
+ fileId: requestedFileId,
198
261
  fileMetadata,
199
262
  webViewLink: fileMetadata.webViewLink,
200
- content: buffer,
263
+ filePath,
264
+ resolvedFromShortcut,
201
265
  };
202
- }
266
+ };
203
267
 
204
- let filePath;
205
- if (this.filePath) {
206
- filePath = this.filePath.includes("tmp/")
207
- ? this.filePath
208
- : `/tmp/${this.filePath}`;
209
- } else {
210
- let defaultName = fileMetadata.name;
211
- if (isWorkspaceDocument) {
212
- const ext = extensionByMime[effectiveMimeType];
213
- if (ext && !defaultName.toLowerCase().endsWith(`.${ext.toLowerCase()}`)) {
214
- defaultName = `${defaultName}.${ext}`;
215
- }
216
- }
217
- filePath = `/tmp/${defaultName}`;
268
+ // Single-file downloads keep the original (non-array) return shape for
269
+ // backwards compatibility; batches return an array of per-file results.
270
+ if (fileIds.length === 1) {
271
+ const result = await downloadOne(fileIds[0]);
272
+ const verb = result.resolvedFromShortcut
273
+ ? "Resolved shortcut and downloaded"
274
+ : "Successfully downloaded";
275
+ const what = this.getBufferResponse
276
+ ? `raw content for file "${result.fileMetadata.name}"`
277
+ : `the file, "${result.fileMetadata.name}"`;
278
+ $.export("$summary", `${verb} ${what}`);
279
+ return result;
218
280
  }
219
281
 
220
- const pipeline = promisify(stream.pipeline);
221
- await pipeline(file, fs.createWriteStream(filePath));
222
- $.export("$summary", `${summaryPrefix} the file, "${fileMetadata.name}"`);
282
+ const files = [];
283
+ for (const id of fileIds) {
284
+ files.push(await downloadOne(id));
285
+ }
286
+ $.export("$summary", `Successfully downloaded ${files.length} file(s).`);
223
287
  return {
224
- fileId: this.fileId,
225
- fileMetadata,
226
- webViewLink: fileMetadata.webViewLink,
227
- filePath,
288
+ files,
289
+ count: files.length,
228
290
  };
229
291
  },
230
292
  };
@@ -6,7 +6,7 @@ export default {
6
6
  key: "google_drive-find-file",
7
7
  name: "Find File",
8
8
  description: "Search for a specific file by name. The `Search Name` field uses Google Drive's tokenized full-text matching — pass a distinctive word or short phrase rather than the full title when the name contains special characters like `&` or `'`. [See the documentation](https://developers.google.com/drive/api/v3/search-files) for more information",
9
- version: "0.1.24",
9
+ version: "0.1.25",
10
10
  annotations: {
11
11
  destructiveHint: false,
12
12
  openWorldHint: true,
@@ -7,7 +7,7 @@ export default {
7
7
  key: "google_drive-find-folder",
8
8
  name: "Find Folder",
9
9
  description: "Search for a specific folder by name. The `Search Name` field uses Google Drive's tokenized full-text matching — pass a distinctive word or short phrase rather than the full title when the name contains special characters like `&` or `'`. [See the documentation](https://developers.google.com/drive/api/v3/search-files) for more information",
10
- version: "0.1.24",
10
+ version: "0.1.25",
11
11
  annotations: {
12
12
  destructiveHint: false,
13
13
  openWorldHint: true,
@@ -6,7 +6,7 @@ export default {
6
6
  key: "google_drive-find-forms",
7
7
  name: "Find Forms",
8
8
  description: "List Google Form documents or search for a Form by name. The `Search Name` field uses Google Drive's tokenized full-text matching — pass a distinctive word or short phrase rather than the full title when the name contains special characters like `&` or `'`. [See the documentation](https://developers.google.com/drive/api/v3/search-files) for more information",
9
- version: "0.0.25",
9
+ version: "0.0.26",
10
10
  annotations: {
11
11
  destructiveHint: false,
12
12
  openWorldHint: true,
@@ -6,7 +6,7 @@ export default {
6
6
  key: "google_drive-find-spreadsheets",
7
7
  name: "Find Spreadsheets",
8
8
  description: "Search for a specific spreadsheet by name. The `Search Name` field uses Google Drive's tokenized full-text matching — pass a distinctive word or short phrase rather than the full title when the name contains special characters like `&` or `'`. [See the documentation](https://developers.google.com/drive/api/v3/search-files) for more information",
9
- version: "0.1.24",
9
+ version: "0.1.25",
10
10
  annotations: {
11
11
  destructiveHint: false,
12
12
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-get-comment",
5
5
  name: "Get Comment By ID",
6
6
  description: "Get comment by ID on a specific file. [See the documentation](https://developers.google.com/workspace/drive/api/reference/rest/v3/comments/get) for more information",
7
- version: "0.0.9",
7
+ version: "0.0.10",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -6,7 +6,7 @@ export default {
6
6
  key: "google_drive-get-current-user",
7
7
  name: "Get Current User",
8
8
  description: "Retrieve Google Drive account metadata for the authenticated user via `about.get`, including display name, email, permission ID, and storage quota. Useful when flows or agents need to confirm the active Google identity or understand available storage. [See the documentation](https://developers.google.com/drive/api/v3/reference/about/get).",
9
- version: "0.0.10",
9
+ version: "0.0.11",
10
10
  type: "action",
11
11
  annotations: {
12
12
  destructiveHint: false,
@@ -11,7 +11,7 @@ export default {
11
11
  + "\n\nCommon fields: `id`, `name`, `mimeType`, `size`, `parents`, `webViewLink`, `webContentLink`,"
12
12
  + " `createdTime`, `modifiedTime`, `owners`, `permissions`, `description`, `trashed`."
13
13
  + " [See the documentation](https://developers.google.com/drive/api/v3/reference/files/get)",
14
- version: "0.0.2",
14
+ version: "0.0.3",
15
15
  type: "action",
16
16
  annotations: {
17
17
  destructiveHint: false,
@@ -5,7 +5,7 @@ export default {
5
5
  key: "google_drive-get-file-by-id",
6
6
  name: "Get File By ID",
7
7
  description: "Get info on a specific file. [See the documentation](https://developers.google.com/drive/api/reference/rest/v3/files/get) for more information",
8
- version: "0.0.20",
8
+ version: "0.0.21",
9
9
  annotations: {
10
10
  destructiveHint: false,
11
11
  openWorldHint: true,
@@ -12,7 +12,7 @@ export default {
12
12
  key: "google_drive-get-folder-id-for-path",
13
13
  name: "Get Folder ID for a Path",
14
14
  description: "Retrieve a folderId for a path. [See the documentation](https://developers.google.com/drive/api/v3/search-files) for more information",
15
- version: "0.1.25",
15
+ version: "0.1.26",
16
16
  annotations: {
17
17
  destructiveHint: false,
18
18
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-get-reply",
5
5
  name: "Get Reply By ID",
6
6
  description: "Get reply by ID on a specific comment. [See the documentation](https://developers.google.com/workspace/drive/api/reference/rest/v3/replies/get) for more information",
7
- version: "0.0.9",
7
+ version: "0.0.10",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-get-shared-drive",
5
5
  name: "Get Shared Drive",
6
6
  description: "Get metadata for one or all shared drives. [See the documentation](https://developers.google.com/drive/api/v3/reference/drives/get) for more information",
7
- version: "0.1.23",
7
+ version: "0.1.24",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -10,7 +10,7 @@ export default {
10
10
  + " When the user says 'my files' or 'my documents', call this first to get the owner email,"
11
11
  + " then pass it to **Search Files** with a query like `'user@example.com' in owners`."
12
12
  + " [See the documentation](https://developers.google.com/drive/api/v3/reference/about/get)",
13
- version: "0.0.2",
13
+ version: "0.0.3",
14
14
  type: "action",
15
15
  annotations: {
16
16
  destructiveHint: false,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-is-folder-ancestor",
5
5
  name: "Is Folder Ancestor",
6
6
  description: "Check if a specific folder is anywhere in the parent hierarchy of a file or folder. [See the documentation](https://developers.google.com/workspace/drive/api/reference/rest/v3/files/get)",
7
- version: "0.0.4",
7
+ version: "0.0.5",
8
8
  type: "action",
9
9
  annotations: {
10
10
  destructiveHint: false,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "google_drive-list-access-proposals",
5
5
  name: "List Access Proposals",
6
6
  description: "List access proposals for a file or folder. [See the documentation](https://developers.google.com/workspace/drive/api/reference/rest/v3/accessproposals/list)",
7
- version: "0.0.16",
7
+ version: "0.0.17",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,