From 4b7e4afa6ab4461d42a9bd3b312d23433463457a Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Fri, 25 Jul 2025 16:35:46 -0400 Subject: [PATCH 1/4] new components --- .../actions/create-image/create-image.mjs | 97 ++++++++++++ .../create-page-element.mjs | 99 ++++++++++++ .../create-presentation.mjs | 2 +- .../actions/create-slide/create-slide.mjs | 48 ++++++ .../delete-page-element.mjs | 42 +++++ .../actions/delete-slide/delete-slide.mjs | 32 ++++ .../find-presentation/find-presentation.mjs | 2 +- .../actions/insert-text/insert-text.mjs | 58 +++++++ .../actions/merge-data/merge-data.mjs | 2 +- .../actions/refresh-chart/refresh-chart.mjs | 2 +- components/google_slides/common/constants.mjs | 143 ++++++++++++++++++ .../google_slides/google_slides.app.mjs | 116 +++++++++++++- components/google_slides/package.json | 6 +- .../new-presentation/new-presentation.mjs | 2 +- 14 files changed, 637 insertions(+), 14 deletions(-) create mode 100644 components/google_slides/actions/create-image/create-image.mjs create mode 100644 components/google_slides/actions/create-page-element/create-page-element.mjs create mode 100644 components/google_slides/actions/create-slide/create-slide.mjs create mode 100644 components/google_slides/actions/delete-page-element/delete-page-element.mjs create mode 100644 components/google_slides/actions/delete-slide/delete-slide.mjs create mode 100644 components/google_slides/actions/insert-text/insert-text.mjs create mode 100644 components/google_slides/common/constants.mjs diff --git a/components/google_slides/actions/create-image/create-image.mjs b/components/google_slides/actions/create-image/create-image.mjs new file mode 100644 index 0000000000000..0254ad9bef65b --- /dev/null +++ b/components/google_slides/actions/create-image/create-image.mjs @@ -0,0 +1,97 @@ +import googleSlides from "../../google_slides.app.mjs"; + +export default { + key: "google_slides-create-image", + name: "Create Image", + description: "Creates an image in a slide. [See the documentation](https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request#CreateImageRequest)", + version: "0.0.1", + type: "action", + props: { + googleSlides, + presentationId: { + propDefinition: [ + googleSlides, + "presentationId", + ], + }, + slideId: { + propDefinition: [ + googleSlides, + "slideId", + (c) => ({ + presentationId: c.presentationId, + }), + ], + }, + url: { + type: "string", + label: "URL", + description: "The URL of the image to insert", + }, + height: { + type: "integer", + label: "Height", + description: "The height of the shape in points (1/72 of an inch)", + }, + width: { + type: "integer", + label: "Width", + description: "The width of the shape in points (1/72 of an inch)", + }, + scaleX: { + type: "integer", + label: "Scale X", + description: "The scale of the shape on the x-axis", + default: 1, + optional: true, + }, + scaleY: { + type: "integer", + label: "Scale Y", + description: "The scale of the shape on the y-axis", + default: 1, + optional: true, + }, + translateX: { + type: "integer", + label: "Translate X", + description: "The translation of the shape on the x-axis", + default: 0, + optional: true, + }, + translateY: { + type: "integer", + label: "Translate Y", + description: "The translation of the shape on the y-axis", + default: 0, + optional: true, + }, + }, + async run({ $ }) { + const response = await this.googleSlides.createImage(this.presentationId, { + url: this.url, + elementProperties: { + pageObjectId: this.slideId, + size: { + height: { + magnitude: this.height, + unit: "PT", + }, + width: { + magnitude: this.width, + unit: "PT", + }, + }, + transform: { + scaleX: this.scaleX, + scaleY: this.scaleY, + translateX: this.translateX, + translateY: this.translateY, + unit: "PT", + }, + }, + }); + $.export("$summary", `Successfully created image with ID: ${response.data.replies[0].createImage.objectId}`); + return response.data; + }, +}; diff --git a/components/google_slides/actions/create-page-element/create-page-element.mjs b/components/google_slides/actions/create-page-element/create-page-element.mjs new file mode 100644 index 0000000000000..b67a3929f8950 --- /dev/null +++ b/components/google_slides/actions/create-page-element/create-page-element.mjs @@ -0,0 +1,99 @@ +import googleSlides from "../../google_slides.app.mjs"; +import { SHAPE_TYPES } from "../../common/constants.mjs"; + +export default { + key: "google_slides-create-page-element", + name: "Create Page Element", + description: "Create a new page element in a slide. [See the documentation](https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request#CreateShapeRequest)", + version: "0.0.1", + type: "action", + props: { + googleSlides, + presentationId: { + propDefinition: [ + googleSlides, + "presentationId", + ], + }, + slideId: { + propDefinition: [ + googleSlides, + "slideId", + (c) => ({ + presentationId: c.presentationId, + }), + ], + }, + type: { + type: "string", + label: "Type", + description: "The type of the shape", + options: SHAPE_TYPES, + }, + height: { + type: "integer", + label: "Height", + description: "The height of the shape in points (1/72 of an inch)", + }, + width: { + type: "integer", + label: "Width", + description: "The width of the shape in points (1/72 of an inch)", + }, + scaleX: { + type: "integer", + label: "Scale X", + description: "The scale of the shape on the x-axis", + default: 1, + optional: true, + }, + scaleY: { + type: "integer", + label: "Scale Y", + description: "The scale of the shape on the y-axis", + default: 1, + optional: true, + }, + translateX: { + type: "integer", + label: "Translate X", + description: "The translation of the shape on the x-axis", + default: 0, + optional: true, + }, + translateY: { + type: "integer", + label: "Translate Y", + description: "The translation of the shape on the y-axis", + default: 0, + optional: true, + }, + }, + async run({ $ }) { + const response = await this.googleSlides.createShape(this.presentationId, { + shapeType: this.type, + elementProperties: { + pageObjectId: this.slideId, + size: { + height: { + magnitude: this.height, + unit: "PT", + }, + width: { + magnitude: this.width, + unit: "PT", + }, + }, + transform: { + scaleX: this.scaleX, + scaleY: this.scaleY, + translateX: this.translateX, + translateY: this.translateY, + unit: "PT", + }, + }, + }); + $.export("$summary", `Successfully created shape with ID: ${response.data.replies[0].createShape.objectId}`); + return response.data; + }, +}; diff --git a/components/google_slides/actions/create-presentation/create-presentation.mjs b/components/google_slides/actions/create-presentation/create-presentation.mjs index e8f0cb6a07c5c..311b968873660 100644 --- a/components/google_slides/actions/create-presentation/create-presentation.mjs +++ b/components/google_slides/actions/create-presentation/create-presentation.mjs @@ -4,7 +4,7 @@ export default { key: "google_slides-create-presentation", name: "Create Presentation", description: "Create a blank presentation or duplicate an existing presentation. [See the docs here](https://developers.google.com/slides/api/guides/presentations#copy_an_existing_presentation)", - version: "0.0.2", + version: "0.0.3", type: "action", props: { app, diff --git a/components/google_slides/actions/create-slide/create-slide.mjs b/components/google_slides/actions/create-slide/create-slide.mjs new file mode 100644 index 0000000000000..b05cae756374d --- /dev/null +++ b/components/google_slides/actions/create-slide/create-slide.mjs @@ -0,0 +1,48 @@ +import googleSlides from "../../google_slides.app.mjs"; +import { ConfigurationError } from "@pipedream/platform"; + +export default { + key: "google_slides-create-slide", + name: "Create Slide", + description: "Create a new slide in a presentation. [See the documentation](https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request#CreateSlideRequest)", + version: "0.0.1", + type: "action", + props: { + googleSlides, + presentationId: { + propDefinition: [ + googleSlides, + "presentationId", + ], + }, + layoutId: { + propDefinition: [ + googleSlides, + "layoutId", + (c) => ({ + presentationId: c.presentationId, + }), + ], + }, + insertionIndex: { + type: "integer", + label: "Insertion Index", + description: "The optional zero-based index indicating where to insert the slides. If you don't specify an index, the slide is created at the end.", + optional: true, + }, + }, + async run({ $ }) { + try { + const response = await this.googleSlides.createSlide(this.presentationId, { + insertionIndex: this.insertionIndex, + slideLayoutReference: { + layoutId: this.layoutId, + }, + }); + $.export("$summary", `Successfully created slide with ID: ${response.data.replies[0].createSlide.objectId}`); + return response.data; + } catch (error) { + throw new ConfigurationError(`Failed to create slide: ${error.message}. Make sure you have permission to edit the presentation.`); + } + }, +}; diff --git a/components/google_slides/actions/delete-page-element/delete-page-element.mjs b/components/google_slides/actions/delete-page-element/delete-page-element.mjs new file mode 100644 index 0000000000000..a0cbe4d405283 --- /dev/null +++ b/components/google_slides/actions/delete-page-element/delete-page-element.mjs @@ -0,0 +1,42 @@ +import googleSlides from "../../google_slides.app.mjs"; + +export default { + key: "google_slides-delete-page-element", + name: "Delete Page Element", + description: "Deletes a page element from a slide. [See the documentation](https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request#DeleteObjectRequest)", + version: "0.0.1", + type: "action", + props: { + googleSlides, + presentationId: { + propDefinition: [ + googleSlides, + "presentationId", + ], + }, + slideId: { + propDefinition: [ + googleSlides, + "slideId", + (c) => ({ + presentationId: c.presentationId, + }), + ], + }, + pageElementId: { + propDefinition: [ + googleSlides, + "shapeId", + (c) => ({ + presentationId: c.presentationId, + slideId: c.slideId, + }), + ], + }, + }, + async run({ $ }) { + const response = await this.googleSlides.deleteObject(this.presentationId, this.pageElementId); + $.export("$summary", `Successfully deleted page element with ID: ${this.pageElementId}`); + return response.data; + }, +}; diff --git a/components/google_slides/actions/delete-slide/delete-slide.mjs b/components/google_slides/actions/delete-slide/delete-slide.mjs new file mode 100644 index 0000000000000..685d5f5697f08 --- /dev/null +++ b/components/google_slides/actions/delete-slide/delete-slide.mjs @@ -0,0 +1,32 @@ +import googleSlides from "../../google_slides.app.mjs"; + +export default { + key: "google_slides-delete-slide", + name: "Delete Slide", + description: "Deletes a slide from a presentation. [See the documentation](https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request#DeleteObjectRequest)", + version: "0.0.1", + type: "action", + props: { + googleSlides, + presentationId: { + propDefinition: [ + googleSlides, + "presentationId", + ], + }, + slideId: { + propDefinition: [ + googleSlides, + "slideId", + (c) => ({ + presentationId: c.presentationId, + }), + ], + }, + }, + async run({ $ }) { + const response = await this.googleSlides.deleteObject(this.presentationId, this.slideId); + $.export("$summary", `Successfully deleted slide with ID: ${this.slideId}`); + return response.data; + }, +}; diff --git a/components/google_slides/actions/find-presentation/find-presentation.mjs b/components/google_slides/actions/find-presentation/find-presentation.mjs index d6b4ba6c073d7..68c1b17f63fa2 100644 --- a/components/google_slides/actions/find-presentation/find-presentation.mjs +++ b/components/google_slides/actions/find-presentation/find-presentation.mjs @@ -4,7 +4,7 @@ export default { key: "google_slides-find-presentation", name: "Find a Presentation", description: "Find a presentation on Google Drive. [See the docs here](https://developers.google.com/slides/api/samples/presentation#list_existing_presentation_files)", - version: "0.0.2", + version: "0.0.3", type: "action", props: { app, diff --git a/components/google_slides/actions/insert-text/insert-text.mjs b/components/google_slides/actions/insert-text/insert-text.mjs new file mode 100644 index 0000000000000..4dce3c21b57bf --- /dev/null +++ b/components/google_slides/actions/insert-text/insert-text.mjs @@ -0,0 +1,58 @@ +import googleSlides from "../../google_slides.app.mjs"; + +export default { + key: "google_slides-insert-text", + name: "Insert Text", + description: "Insert text into a shape. [See the documentation](https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request#InsertTextRequest)", + version: "0.0.1", + type: "action", + props: { + googleSlides, + presentationId: { + propDefinition: [ + googleSlides, + "presentationId", + ], + }, + slideId: { + propDefinition: [ + googleSlides, + "slideId", + (c) => ({ + presentationId: c.presentationId, + }), + ], + }, + shapeId: { + propDefinition: [ + googleSlides, + "shapeId", + (c) => ({ + presentationId: c.presentationId, + slideId: c.slideId, + textOnly: true, + }), + ], + }, + text: { + type: "string", + label: "Text", + description: "The text to insert", + }, + insertionIndex: { + type: "integer", + label: "Insertion Index", + description: "The index where the text will be inserted", + optional: true, + }, + }, + async run({ $ }) { + const response = await this.googleSlides.insertText(this.presentationId, { + objectId: this.shapeId, + text: this.text, + insertionIndex: this.insertionIndex, + }); + $.export("$summary", `Successfully inserted text into shape with ID: ${this.shapeId}`); + return response.data; + }, +}; diff --git a/components/google_slides/actions/merge-data/merge-data.mjs b/components/google_slides/actions/merge-data/merge-data.mjs index d585f769ef2a0..1a92b25b7aa7b 100644 --- a/components/google_slides/actions/merge-data/merge-data.mjs +++ b/components/google_slides/actions/merge-data/merge-data.mjs @@ -4,7 +4,7 @@ export default { key: "google_slides-merge-data", name: "Merge Data", description: "Merge data into a presentation. [See the docs here](https://developers.google.com/slides/api/guides/merge)", - version: "0.0.1", + version: "0.0.2", type: "action", props: { app, diff --git a/components/google_slides/actions/refresh-chart/refresh-chart.mjs b/components/google_slides/actions/refresh-chart/refresh-chart.mjs index 3f74f4466b246..f7aca03180854 100644 --- a/components/google_slides/actions/refresh-chart/refresh-chart.mjs +++ b/components/google_slides/actions/refresh-chart/refresh-chart.mjs @@ -4,7 +4,7 @@ export default { key: "google_slides-refresh-chart", name: "Refresh a chart", description: "Refresh a chart from Sheets. [See the docs here](https://developers.google.com/slides/api/samples/elements#refresh_a_chart_from_sheets)", - version: "0.0.2", + version: "0.0.3", type: "action", props: { app, diff --git a/components/google_slides/common/constants.mjs b/components/google_slides/common/constants.mjs new file mode 100644 index 0000000000000..bcc0281c23800 --- /dev/null +++ b/components/google_slides/common/constants.mjs @@ -0,0 +1,143 @@ +export const SHAPE_TYPES = [ + "TEXT_BOX", + "RECTANGLE", + "ROUND_RECTANGLE", + "ELLIPSE", + "ARC", + "BENT_ARROW", + "BENT_UP_ARROW", + "BEVEL", + "BLOCK_ARC", + "BRACE_PAIR", + "BRACKET_PAIR", + "CAN", + "CHEVRON", + "CHORD", + "CLOUD", + "CORNER", + "CUBE", + "CURVED_DOWN_ARROW", + "CURVED_LEFT_ARROW", + "CURVED_RIGHT_ARROW", + "CURVED_UP_ARROW", + "DECAGON", + "DIAGONAL_STRIPE", + "DIAMOND", + "DODECAGON", + "DONUT", + "DOUBLE_WAVE", + "DOWN_ARROW", + "DOWN_ARROW_CALLOUT", + "FOLDED_CORNER", + "FRAME", + "HALF_FRAME", + "HEART", + "HEPTAGON", + "HEXAGON", + "HOME_PLATE", + "HORIZONTAL_SCROLL", + "IRREGULAR_SEAL_1", + "IRREGULAR_SEAL_2", + "LEFT_ARROW", + "LEFT_ARROW_CALLOUT", + "LEFT_BRACE", + "LEFT_BRACKET", + "LEFT_RIGHT_ARROW", + "LEFT_RIGHT_ARROW_CALLOUT", + "LEFT_RIGHT_UP_ARROW", + "LEFT_UP_ARROW", + "LIGHTNING_BOLT", + "MATH_DIVIDE", + "MATH_EQUAL", + "MATH_MINUS", + "MATH_MULTIPLY", + "MATH_NOT_EQUAL", + "MATH_PLUS", + "MOON", + "NO_SMOKING", + "NOTCHED_RIGHT_ARROW", + "OCTAGON", + "PARALLELOGRAM", + "PENTAGON", + "PIE", + "PLAQUE", + "PLUS", + "QUAD_ARROW", + "QUAD_ARROW_CALLOUT", + "RIBBON", + "RIBBON_2", + "RIGHT_ARROW", + "RIGHT_ARROW_CALLOUT", + "RIGHT_BRACE", + "RIGHT_BRACKET", + "ROUND_1_RECTANGLE", + "ROUND_2_DIAGONAL_RECTANGLE", + "ROUND_2_SAME_RECTANGLE", + "RIGHT_TRIANGLE", + "SMILEY_FACE", + "SNIP_1_RECTANGLE", + "SNIP_2_DIAGONAL_RECTANGLE", + "SNIP_2_SAME_RECTANGLE", + "SNIP_ROUND_RECTANGLE", + "STAR_10", + "STAR_12", + "STAR_16", + "STAR_24", + "STAR_32", + "STAR_4", + "STAR_5", + "STAR_6", + "STAR_7", + "STAR_8", + "STRIPED_RIGHT_ARROW", + "SUN", + "TRAPEZOID", + "TRIANGLE", + "UP_ARROW", + "UP_ARROW_CALLOUT", + "UP_DOWN_ARROW", + "UTURN_ARROW", + "VERTICAL_SCROLL", + "WAVE", + "WEDGE_ELLIPSE_CALLOUT", + "WEDGE_RECTANGLE_CALLOUT", + "WEDGE_ROUND_RECTANGLE_CALLOUT", + "FLOW_CHART_ALTERNATE_PROCESS", + "FLOW_CHART_COLLATE", + "FLOW_CHART_CONNECTOR", + "FLOW_CHART_DECISION", + "FLOW_CHART_DELAY", + "FLOW_CHART_DISPLAY", + "FLOW_CHART_DOCUMENT", + "FLOW_CHART_EXTRACT", + "FLOW_CHART_INPUT_OUTPUT", + "FLOW_CHART_INTERNAL_STORAGE", + "FLOW_CHART_MAGNETIC_DISK", + "FLOW_CHART_MAGNETIC_DRUM", + "FLOW_CHART_MAGNETIC_TAPE", + "FLOW_CHART_MANUAL_INPUT", + "FLOW_CHART_MANUAL_OPERATION", + "FLOW_CHART_MERGE", + "FLOW_CHART_MULTIDOCUMENT", + "FLOW_CHART_OFFLINE_STORAGE", + "FLOW_CHART_OFFPAGE_CONNECTOR", + "FLOW_CHART_ONLINE_STORAGE", + "FLOW_CHART_OR", + "FLOW_CHART_PREDEFINED_PROCESS", + "FLOW_CHART_PREPARATION", + "FLOW_CHART_PROCESS", + "FLOW_CHART_PUNCHED_CARD", + "FLOW_CHART_PUNCHED_TAPE", + "FLOW_CHART_SORT", + "FLOW_CHART_SUMMING_JUNCTION", + "FLOW_CHART_TERMINATOR", + "ARROW_EAST", + "ARROW_NORTH_EAST", + "ARROW_NORTH", + "SPEECH", + "STARBURST", + "TEARDROP", + "ELLIPSE_RIBBON", + "ELLIPSE_RIBBON_2", + "CLOUD_CALLOUT", +]; diff --git a/components/google_slides/google_slides.app.mjs b/components/google_slides/google_slides.app.mjs index 6d36c69dddb9a..a66bcca53e98f 100644 --- a/components/google_slides/google_slides.app.mjs +++ b/components/google_slides/google_slides.app.mjs @@ -19,6 +19,49 @@ export default { return this.listPresentationsOptions(driveId, nextPageToken); }, }, + layoutId: { + type: "string", + label: "Layout ID", + description: "The ID of a slide layout", + optional: true, + async options({ presentationId }) { + const { layouts } = await this.getPresentation(presentationId); + return layouts.map((layout) => ({ + label: layout.layoutProperties.name, + value: layout.objectId, + })); + }, + }, + slideId: { + type: "string", + label: "Slide ID", + description: "The ID of a slide", + async options({ presentationId }) { + const { slides } = await this.getPresentation(presentationId); + return slides.map((slide) => ({ + label: slide.slideProperties.layoutObjectId, + value: slide.objectId, + })); + }, + }, + shapeId: { + type: "string", + label: "Shape ID", + description: "The ID of a shape", + async options({ + presentationId, slideId, textOnly = false, + }) { + const { pageElements } = await this.getSlide(presentationId, slideId); + let shapes = pageElements; + if (textOnly) { + shapes = shapes.filter((element) => element.shape.shapeType === "TEXT_BOX"); + } + return shapes.map((element) => ({ + label: element.shape?.placeholder?.type || element?.shape?.shapeType || element.objectId, + value: element.objectId, + })); + }, + }, }, methods: { ...googleDrive.methods, @@ -32,8 +75,16 @@ export default { auth, }); }, - refreshChart(presentationId, chartId) { + batchUpdate(presentationId, requests) { const slides = this.slides(); + return slides.presentations.batchUpdate({ + presentationId, + requestBody: { + requests, + }, + }); + }, + refreshChart(presentationId, chartId) { const requests = [ { refreshSheetsChart: { @@ -41,12 +92,57 @@ export default { }, }, ]; - return slides.presentations.batchUpdate({ - presentationId, - requestBody: { - requests, + return this.batchUpdate(presentationId, requests); + }, + createSlide(presentationId, data) { + const requests = [ + { + createSlide: { + ...data, + }, }, - }); + ]; + return this.batchUpdate(presentationId, requests); + }, + createShape(presentationId, data) { + const requests = [ + { + createShape: { + ...data, + }, + }, + ]; + return this.batchUpdate(presentationId, requests); + }, + insertText(presentationId, data) { + const requests = [ + { + insertText: { + ...data, + }, + }, + ]; + return this.batchUpdate(presentationId, requests); + }, + createImage(presentationId, data) { + const requests = [ + { + createImage: { + ...data, + }, + }, + ]; + return this.batchUpdate(presentationId, requests); + }, + deleteObject(presentationId, objectId) { + const requests = [ + { + deleteObject: { + objectId, + }, + }, + ]; + return this.batchUpdate(presentationId, requests); }, async createPresentation(title) { const slides = this.slides(); @@ -79,6 +175,14 @@ export default { }; return (await slides.presentations.get(request)).data; }, + async getSlide(presentationId, slideId) { + const slides = this.slides(); + const request = { + presentationId, + pageObjectId: slideId, + }; + return (await slides.presentations.pages.get(request)).data; + }, async copyPresentation(fileId, name) { const drive = this.drive(); const resource = { diff --git a/components/google_slides/package.json b/components/google_slides/package.json index c25733a48f2fc..7cf9ac9e4c6f2 100644 --- a/components/google_slides/package.json +++ b/components/google_slides/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/google_slides", - "version": "0.1.1", + "version": "0.2.0", "description": "Pipedream Google Slides Components", "main": "google_slides.app.mjs", "keywords": [ @@ -10,9 +10,9 @@ "homepage": "https://pipedream.com/apps/google_slides", "author": "Pipedream (https://pipedream.com/)", "dependencies": { - "@googleapis/slides": "^0.7.1", "@googleapis/drive": "^2.3.0", - "@pipedream/platform": "^0.9.0", + "@googleapis/slides": "^0.7.1", + "@pipedream/platform": "^3.1.0", "mime-db": "^1.51.0", "uuid": "^8.3.2" }, diff --git a/components/google_slides/sources/new-presentation/new-presentation.mjs b/components/google_slides/sources/new-presentation/new-presentation.mjs index 03f67a74017f2..381059a329a68 100644 --- a/components/google_slides/sources/new-presentation/new-presentation.mjs +++ b/components/google_slides/sources/new-presentation/new-presentation.mjs @@ -6,7 +6,7 @@ export default { type: "source", name: "New Presentation (Instant)", description: "Emit new event each time a new presentation is created in a drive.", - version: "0.0.3", + version: "0.0.4", hooks: { ...newFilesInstant.hooks, async deploy() { From 33ad76549a54bed135b5deb08a0a3786737c1053 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Fri, 25 Jul 2025 16:36:48 -0400 Subject: [PATCH 2/4] pnpm-lock.yaml --- pnpm-lock.yaml | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3357e2ccaf846..e54487215166e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4158,8 +4158,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 - components/ebay: - specifiers: {} + components/ebay: {} components/echtpost_postcards: dependencies: @@ -5840,8 +5839,8 @@ importers: specifier: ^0.7.1 version: 0.7.1 '@pipedream/platform': - specifier: ^0.9.0 - version: 0.9.0 + specifier: ^3.1.0 + version: 3.1.0 mime-db: specifier: ^1.51.0 version: 1.53.0 @@ -9571,8 +9570,7 @@ importers: specifier: ^4.3.2 version: 4.5.0 - components/openum: - specifiers: {} + components/openum: {} components/openweather_api: dependencies: @@ -12833,8 +12831,7 @@ importers: components/sms_magic: {} - components/sms_messages: - specifiers: {} + components/sms_messages: {} components/sms_partner: {} @@ -14904,8 +14901,7 @@ importers: specifier: ^3.0.0 version: 3.0.3 - components/wbiztool: - specifiers: {} + components/wbiztool: {} components/wealthbox: dependencies: From 331feeb7b6e71db46623c62c08f58412ceb5ef84 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Tue, 29 Jul 2025 11:16:54 -0400 Subject: [PATCH 3/4] update --- components/google_slides/google_slides.app.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/google_slides/google_slides.app.mjs b/components/google_slides/google_slides.app.mjs index a66bcca53e98f..fa9c74e36247d 100644 --- a/components/google_slides/google_slides.app.mjs +++ b/components/google_slides/google_slides.app.mjs @@ -54,7 +54,7 @@ export default { const { pageElements } = await this.getSlide(presentationId, slideId); let shapes = pageElements; if (textOnly) { - shapes = shapes.filter((element) => element.shape.shapeType === "TEXT_BOX"); + shapes = shapes.filter((element) => element?.shape?.shapeType === "TEXT_BOX"); } return shapes.map((element) => ({ label: element.shape?.placeholder?.type || element?.shape?.shapeType || element.objectId, From 2ec41f28eaaf877dc23caff2b3b0d2e8ea904eb8 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Tue, 29 Jul 2025 13:16:19 -0400 Subject: [PATCH 4/4] versions --- .../actions/create-presentation/create-presentation.mjs | 2 +- .../actions/find-presentation/find-presentation.mjs | 2 +- components/google_slides/actions/merge-data/merge-data.mjs | 2 +- .../google_slides/actions/refresh-chart/refresh-chart.mjs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/google_slides/actions/create-presentation/create-presentation.mjs b/components/google_slides/actions/create-presentation/create-presentation.mjs index 311b968873660..28dbd90555e31 100644 --- a/components/google_slides/actions/create-presentation/create-presentation.mjs +++ b/components/google_slides/actions/create-presentation/create-presentation.mjs @@ -4,7 +4,7 @@ export default { key: "google_slides-create-presentation", name: "Create Presentation", description: "Create a blank presentation or duplicate an existing presentation. [See the docs here](https://developers.google.com/slides/api/guides/presentations#copy_an_existing_presentation)", - version: "0.0.3", + version: "0.0.4", type: "action", props: { app, diff --git a/components/google_slides/actions/find-presentation/find-presentation.mjs b/components/google_slides/actions/find-presentation/find-presentation.mjs index 68c1b17f63fa2..a7563123636f0 100644 --- a/components/google_slides/actions/find-presentation/find-presentation.mjs +++ b/components/google_slides/actions/find-presentation/find-presentation.mjs @@ -4,7 +4,7 @@ export default { key: "google_slides-find-presentation", name: "Find a Presentation", description: "Find a presentation on Google Drive. [See the docs here](https://developers.google.com/slides/api/samples/presentation#list_existing_presentation_files)", - version: "0.0.3", + version: "0.0.4", type: "action", props: { app, diff --git a/components/google_slides/actions/merge-data/merge-data.mjs b/components/google_slides/actions/merge-data/merge-data.mjs index 1a92b25b7aa7b..98e93e327d99d 100644 --- a/components/google_slides/actions/merge-data/merge-data.mjs +++ b/components/google_slides/actions/merge-data/merge-data.mjs @@ -4,7 +4,7 @@ export default { key: "google_slides-merge-data", name: "Merge Data", description: "Merge data into a presentation. [See the docs here](https://developers.google.com/slides/api/guides/merge)", - version: "0.0.2", + version: "0.0.3", type: "action", props: { app, diff --git a/components/google_slides/actions/refresh-chart/refresh-chart.mjs b/components/google_slides/actions/refresh-chart/refresh-chart.mjs index f7aca03180854..3e9203c874389 100644 --- a/components/google_slides/actions/refresh-chart/refresh-chart.mjs +++ b/components/google_slides/actions/refresh-chart/refresh-chart.mjs @@ -4,7 +4,7 @@ export default { key: "google_slides-refresh-chart", name: "Refresh a chart", description: "Refresh a chart from Sheets. [See the docs here](https://developers.google.com/slides/api/samples/elements#refresh_a_chart_from_sheets)", - version: "0.0.3", + version: "0.0.4", type: "action", props: { app,