@bubblelab/bubble-core 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bubble-bundle.d.ts +759 -350
- package/dist/bubble-factory.d.ts.map +1 -1
- package/dist/bubble-factory.js +125 -35
- package/dist/bubble-factory.js.map +1 -1
- package/dist/bubble-flow/bubble-flow-class.d.ts +5 -0
- package/dist/bubble-flow/bubble-flow-class.d.ts.map +1 -1
- package/dist/bubble-flow/bubble-flow-class.js +20 -0
- package/dist/bubble-flow/bubble-flow-class.js.map +1 -1
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts.map +1 -1
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.js +6 -3
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.js.map +1 -1
- package/dist/bubbles/service-bubble/agi-inc.d.ts +1121 -0
- package/dist/bubbles/service-bubble/agi-inc.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/agi-inc.js +730 -0
- package/dist/bubbles/service-bubble/agi-inc.js.map +1 -0
- package/dist/bubbles/service-bubble/ai-agent.d.ts +277 -65
- package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.js +533 -399
- package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
- package/dist/bubbles/service-bubble/airtable.d.ts +1753 -0
- package/dist/bubbles/service-bubble/airtable.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/airtable.js +1173 -0
- package/dist/bubbles/service-bubble/airtable.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +240 -0
- package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.js +119 -0
- package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +4 -4
- package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +14 -14
- package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +137 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.js +81 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +6 -6
- package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +32 -32
- package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +488 -0
- package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.js +463 -0
- package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +262 -0
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.js +291 -0
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +12 -12
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +1301 -170
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js +32 -0
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js.map +1 -1
- package/dist/bubbles/service-bubble/apify/apify.d.ts +162 -17
- package/dist/bubbles/service-bubble/apify/apify.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/apify/apify.js +205 -32
- package/dist/bubbles/service-bubble/apify/apify.js.map +1 -1
- package/dist/bubbles/service-bubble/eleven-labs.d.ts +421 -0
- package/dist/bubbles/service-bubble/eleven-labs.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/eleven-labs.js +479 -0
- package/dist/bubbles/service-bubble/eleven-labs.js.map +1 -0
- package/dist/bubbles/service-bubble/firecrawl.d.ts +37748 -0
- package/dist/bubbles/service-bubble/firecrawl.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/firecrawl.js +1489 -0
- package/dist/bubbles/service-bubble/firecrawl.js.map +1 -0
- package/dist/bubbles/service-bubble/followupboss.d.ts +6822 -0
- package/dist/bubbles/service-bubble/followupboss.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/followupboss.js +1394 -0
- package/dist/bubbles/service-bubble/followupboss.js.map +1 -0
- package/dist/bubbles/service-bubble/github.d.ts +2399 -0
- package/dist/bubbles/service-bubble/github.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/github.js +1052 -0
- package/dist/bubbles/service-bubble/github.js.map +1 -0
- package/dist/bubbles/service-bubble/gmail.d.ts +180 -180
- package/dist/bubbles/service-bubble/google-calendar.d.ts +60 -60
- package/dist/bubbles/service-bubble/google-drive.d.ts +37 -36
- package/dist/bubbles/service-bubble/google-drive.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/google-drive.js +35 -3
- package/dist/bubbles/service-bubble/google-drive.js.map +1 -1
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +943 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.d.ts +31 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.js +184 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.js.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.js +401 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.js.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +1024 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/{google-sheets.js → google-sheets/google-sheets.schema.js} +45 -409
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.d.ts +38 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.js +183 -0
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.js.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/index.d.ts +4 -0
- package/dist/bubbles/service-bubble/google-sheets/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/google-sheets/index.js +4 -0
- package/dist/bubbles/service-bubble/google-sheets/index.js.map +1 -0
- package/dist/bubbles/service-bubble/hello-world.d.ts +4 -4
- package/dist/bubbles/service-bubble/http.d.ts +4 -4
- package/dist/bubbles/service-bubble/http.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/http.js +7 -1
- package/dist/bubbles/service-bubble/http.js.map +1 -1
- package/dist/bubbles/service-bubble/insforge-db.d.ts +140 -0
- package/dist/bubbles/service-bubble/insforge-db.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/insforge-db.js +260 -0
- package/dist/bubbles/service-bubble/insforge-db.js.map +1 -0
- package/dist/bubbles/service-bubble/notion/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/notion/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/notion/index.js +3 -0
- package/dist/bubbles/service-bubble/notion/index.js.map +1 -0
- package/dist/bubbles/service-bubble/notion/notion.d.ts +35405 -0
- package/dist/bubbles/service-bubble/notion/notion.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/notion/notion.js +1492 -0
- package/dist/bubbles/service-bubble/notion/notion.js.map +1 -0
- package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +1148 -0
- package/dist/bubbles/service-bubble/notion/property-schemas.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/notion/property-schemas.js +341 -0
- package/dist/bubbles/service-bubble/notion/property-schemas.js.map +1 -0
- package/dist/bubbles/service-bubble/postgresql.d.ts +12 -12
- package/dist/bubbles/service-bubble/resend.d.ts +34 -13
- package/dist/bubbles/service-bubble/resend.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/resend.js +133 -2
- package/dist/bubbles/service-bubble/resend.js.map +1 -1
- package/dist/bubbles/service-bubble/slack.d.ts +241 -241
- package/dist/bubbles/service-bubble/slack.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/slack.js +2 -2
- package/dist/bubbles/service-bubble/slack.js.map +1 -1
- package/dist/bubbles/service-bubble/storage.d.ts +25 -21
- package/dist/bubbles/service-bubble/storage.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/storage.js +43 -2
- package/dist/bubbles/service-bubble/storage.js.map +1 -1
- package/dist/bubbles/service-bubble/telegram.d.ts +7742 -0
- package/dist/bubbles/service-bubble/telegram.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/telegram.js +1132 -0
- package/dist/bubbles/service-bubble/telegram.js.map +1 -0
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +76 -20
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js +12 -0
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +14 -14
- package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +188 -0
- package/dist/bubbles/tool-bubble/code-edit-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/code-edit-tool.js +321 -0
- package/dist/bubbles/tool-bubble/code-edit-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +8 -4
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.js +115 -10
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +455 -0
- package/dist/bubbles/tool-bubble/google-maps-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/google-maps-tool.js +205 -0
- package/dist/bubbles/tool-bubble/google-maps-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts +36 -36
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/instagram-tool.js +2 -2
- package/dist/bubbles/tool-bubble/instagram-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +824 -447
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/linkedin-tool.js +232 -12
- package/dist/bubbles/tool-bubble/linkedin-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +66 -66
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +17 -16
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/research-agent-tool.js +26 -16
- package/dist/bubbles/tool-bubble/research-agent-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +485 -0
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/tiktok-tool.js +226 -0
- package/dist/bubbles/tool-bubble/tiktok-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/tool-template.d.ts +8 -8
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts +947 -0
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/twitter-tool.js +494 -0
- package/dist/bubbles/tool-bubble/twitter-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +22 -16
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/web-crawl-tool.js +58 -59
- package/dist/bubbles/tool-bubble/web-crawl-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/web-extract-tool.js +17 -17
- package/dist/bubbles/tool-bubble/web-extract-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +15 -107
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/web-scrape-tool.js +51 -72
- package/dist/bubbles/tool-bubble/web-scrape-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts +20 -9
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/web-search-tool.js +45 -35
- package/dist/bubbles/tool-bubble/web-search-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +25 -25
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/youtube-tool.js +5 -5
- package/dist/bubbles/tool-bubble/youtube-tool.js.map +1 -1
- package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +30 -30
- package/dist/bubbles/workflow-bubble/generate-document.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +22 -22
- package/dist/bubbles/workflow-bubble/parse-document.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +54 -54
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js +4 -4
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +36 -36
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +14 -14
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js +6 -6
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +26 -26
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.js +24 -4
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.js.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +19 -19
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js +8 -8
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js.map +1 -1
- package/dist/bubbles.json +220 -72
- package/dist/index.d.ts +23 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/logging/BubbleLogger.d.ts +45 -16
- package/dist/logging/BubbleLogger.d.ts.map +1 -1
- package/dist/logging/BubbleLogger.js +178 -77
- package/dist/logging/BubbleLogger.js.map +1 -1
- package/dist/logging/StreamingBubbleLogger.d.ts +13 -1
- package/dist/logging/StreamingBubbleLogger.d.ts.map +1 -1
- package/dist/logging/StreamingBubbleLogger.js +51 -8
- package/dist/logging/StreamingBubbleLogger.js.map +1 -1
- package/dist/logging/WebhookStreamLogger.d.ts +66 -0
- package/dist/logging/WebhookStreamLogger.d.ts.map +1 -0
- package/dist/logging/WebhookStreamLogger.js +291 -0
- package/dist/logging/WebhookStreamLogger.js.map +1 -0
- package/dist/types/available-tools.d.ts +1 -1
- package/dist/types/available-tools.d.ts.map +1 -1
- package/dist/types/available-tools.js +1 -0
- package/dist/types/available-tools.js.map +1 -1
- package/dist/types/base-bubble-class.d.ts +6 -4
- package/dist/types/base-bubble-class.d.ts.map +1 -1
- package/dist/types/base-bubble-class.js +35 -20
- package/dist/types/base-bubble-class.js.map +1 -1
- package/dist/types/bubble.d.ts +2 -0
- package/dist/types/bubble.d.ts.map +1 -1
- package/dist/types/service-bubble-class.d.ts +1 -1
- package/dist/types/service-bubble-class.d.ts.map +1 -1
- package/dist/types/service-bubble-class.js +2 -2
- package/dist/types/service-bubble-class.js.map +1 -1
- package/dist/types/tool-bubble-class.d.ts +1 -1
- package/dist/types/tool-bubble-class.d.ts.map +1 -1
- package/dist/types/tool-bubble-class.js +2 -2
- package/dist/types/tool-bubble-class.js.map +1 -1
- package/dist/types/workflow-bubble-class.d.ts +1 -1
- package/dist/types/workflow-bubble-class.d.ts.map +1 -1
- package/dist/types/workflow-bubble-class.js +2 -2
- package/dist/types/workflow-bubble-class.js.map +1 -1
- package/dist/utils/agent-formatter.d.ts +14 -2
- package/dist/utils/agent-formatter.d.ts.map +1 -1
- package/dist/utils/agent-formatter.js +174 -26
- package/dist/utils/agent-formatter.js.map +1 -1
- package/dist/utils/bubbleflow-validation.d.ts +7 -0
- package/dist/utils/bubbleflow-validation.d.ts.map +1 -1
- package/dist/utils/bubbleflow-validation.js +171 -6
- package/dist/utils/bubbleflow-validation.js.map +1 -1
- package/dist/utils/json-parsing.d.ts.map +1 -1
- package/dist/utils/json-parsing.js +146 -0
- package/dist/utils/json-parsing.js.map +1 -1
- package/dist/utils/safe-gemini-chat.d.ts +31 -0
- package/dist/utils/safe-gemini-chat.d.ts.map +1 -0
- package/dist/utils/safe-gemini-chat.js +93 -0
- package/dist/utils/safe-gemini-chat.js.map +1 -0
- package/dist/utils/schema-comparison.d.ts +92 -0
- package/dist/utils/schema-comparison.d.ts.map +1 -0
- package/dist/utils/schema-comparison.js +716 -0
- package/dist/utils/schema-comparison.js.map +1 -0
- package/dist/utils/zod-schema.d.ts +24 -0
- package/dist/utils/zod-schema.d.ts.map +1 -0
- package/dist/utils/zod-schema.js +56 -0
- package/dist/utils/zod-schema.js.map +1 -0
- package/package.json +5 -4
- package/dist/bubbles/service-bubble/google-sheets.d.ts +0 -1811
- package/dist/bubbles/service-bubble/google-sheets.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/google-sheets.js.map +0 -1
- package/dist/bubbles/service-bubble/x-twitter.d.ts +0 -814
- package/dist/bubbles/service-bubble/x-twitter.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/x-twitter.js +0 -445
- package/dist/bubbles/service-bubble/x-twitter.js.map +0 -1
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +0 -125
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +0 -1
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +0 -808
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +0 -1
- package/dist/test-gm.d.ts +0 -10
- package/dist/test-gm.d.ts.map +0 -1
- package/dist/test-gm.js +0 -95
- package/dist/test-gm.js.map +0 -1
- package/dist/utils/param-helper.d.ts +0 -2
- package/dist/utils/param-helper.d.ts.map +0 -1
- package/dist/utils/param-helper.js +0 -5
- package/dist/utils/param-helper.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-sheets.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/google-sheets/google-sheets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BubbleFlow, type WebhookEvent } from '@bubblelab/bubble-core';
|
|
2
|
+
export interface Output {
|
|
3
|
+
spreadsheetId: string;
|
|
4
|
+
spreadsheetUrl: string;
|
|
5
|
+
testResults: {
|
|
6
|
+
operation: string;
|
|
7
|
+
success: boolean;
|
|
8
|
+
details?: string;
|
|
9
|
+
}[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Payload for the Google Sheets Stress Test workflow.
|
|
13
|
+
*/
|
|
14
|
+
export interface SheetsStressTestPayload extends WebhookEvent {
|
|
15
|
+
/**
|
|
16
|
+
* The title for the test spreadsheet that will be created.
|
|
17
|
+
* @canBeFile false
|
|
18
|
+
*/
|
|
19
|
+
testTitle?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class GoogleSheetsStressTest extends BubbleFlow<'webhook/http'> {
|
|
22
|
+
private createTestSpreadsheet;
|
|
23
|
+
private createSheetWithSpaces;
|
|
24
|
+
private writeRawDataWithNulls;
|
|
25
|
+
private readFromRangeWithSpaces;
|
|
26
|
+
private appendToRangeWithSpaces;
|
|
27
|
+
private clearRangeWithSpaces;
|
|
28
|
+
private deleteSheet;
|
|
29
|
+
handle(payload: SheetsStressTestPayload): Promise<Output>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=google-sheets.integration.flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-sheets.integration.flow.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,MAAM;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,sBAAuB,SAAQ,UAAU,CAAC,cAAc,CAAC;YAEtD,qBAAqB;YAmBrB,qBAAqB;YAsBrB,qBAAqB;YAqBrB,uBAAuB;YAgBvB,uBAAuB;YAsBvB,oBAAoB;YAepB,WAAW;IAcnB,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;CA0HhE"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { BubbleFlow, GoogleSheetsBubble, } from '@bubblelab/bubble-core';
|
|
2
|
+
export class GoogleSheetsStressTest extends BubbleFlow {
|
|
3
|
+
// Creates a new Google Spreadsheet with a specific title
|
|
4
|
+
async createTestSpreadsheet(title) {
|
|
5
|
+
const result = await new GoogleSheetsBubble({
|
|
6
|
+
operation: 'create_spreadsheet',
|
|
7
|
+
title: title,
|
|
8
|
+
sheet_titles: ['InitialSheet'],
|
|
9
|
+
}).action();
|
|
10
|
+
if (!result.success ||
|
|
11
|
+
result.data?.operation !== 'create_spreadsheet' ||
|
|
12
|
+
!result.data.spreadsheet) {
|
|
13
|
+
throw new Error(`Failed to create spreadsheet: ${result.error}`);
|
|
14
|
+
}
|
|
15
|
+
return result.data.spreadsheet;
|
|
16
|
+
}
|
|
17
|
+
// Adds a sheet with spaces in the name - tests if bubble handles spaces without manual quoting
|
|
18
|
+
async createSheetWithSpaces(spreadsheetId, sheetName) {
|
|
19
|
+
const result = await new GoogleSheetsBubble({
|
|
20
|
+
operation: 'add_sheet',
|
|
21
|
+
spreadsheet_id: spreadsheetId,
|
|
22
|
+
sheet_title: sheetName,
|
|
23
|
+
}).action();
|
|
24
|
+
if (!result.success ||
|
|
25
|
+
result.data?.operation !== 'add_sheet' ||
|
|
26
|
+
result.data.sheet_id === undefined) {
|
|
27
|
+
throw new Error(`Failed to add sheet with spaces: ${result.error}`);
|
|
28
|
+
}
|
|
29
|
+
return result.data.sheet_id;
|
|
30
|
+
}
|
|
31
|
+
// Writes raw data with nulls/undefineds to test bubble's native null handling
|
|
32
|
+
async writeRawDataWithNulls(spreadsheetId, range, data) {
|
|
33
|
+
const result = await new GoogleSheetsBubble({
|
|
34
|
+
operation: 'write_values',
|
|
35
|
+
spreadsheet_id: spreadsheetId,
|
|
36
|
+
range: range,
|
|
37
|
+
values: data,
|
|
38
|
+
value_input_option: 'RAW',
|
|
39
|
+
}).action();
|
|
40
|
+
if (!result.success) {
|
|
41
|
+
throw new Error(`Failed to write stress test data: ${result.error}`);
|
|
42
|
+
}
|
|
43
|
+
return result.data;
|
|
44
|
+
}
|
|
45
|
+
// Reads data from a range with spaces in sheet name - tests bubble's range parsing
|
|
46
|
+
async readFromRangeWithSpaces(spreadsheetId, range) {
|
|
47
|
+
const result = await new GoogleSheetsBubble({
|
|
48
|
+
operation: 'read_values',
|
|
49
|
+
spreadsheet_id: spreadsheetId,
|
|
50
|
+
range: range,
|
|
51
|
+
value_render_option: 'FORMATTED_VALUE',
|
|
52
|
+
}).action();
|
|
53
|
+
if (!result.success || result.data?.operation !== 'read_values') {
|
|
54
|
+
throw new Error(`Failed to read verification data: ${result.error}`);
|
|
55
|
+
}
|
|
56
|
+
return result.data.values;
|
|
57
|
+
}
|
|
58
|
+
// Appends data to a range with spaces in sheet name
|
|
59
|
+
async appendToRangeWithSpaces(spreadsheetId, range, values) {
|
|
60
|
+
const result = await new GoogleSheetsBubble({
|
|
61
|
+
operation: 'append_values',
|
|
62
|
+
spreadsheet_id: spreadsheetId,
|
|
63
|
+
range: range,
|
|
64
|
+
values: values,
|
|
65
|
+
insert_data_option: 'INSERT_ROWS',
|
|
66
|
+
value_input_option: 'RAW',
|
|
67
|
+
}).action();
|
|
68
|
+
if (!result.success) {
|
|
69
|
+
throw new Error(`Failed to append data: ${result.error}`);
|
|
70
|
+
}
|
|
71
|
+
return result.data;
|
|
72
|
+
}
|
|
73
|
+
// Clears data from a range with spaces in sheet name
|
|
74
|
+
async clearRangeWithSpaces(spreadsheetId, range) {
|
|
75
|
+
const result = await new GoogleSheetsBubble({
|
|
76
|
+
operation: 'clear_values',
|
|
77
|
+
spreadsheet_id: spreadsheetId,
|
|
78
|
+
range: range,
|
|
79
|
+
}).action();
|
|
80
|
+
if (!result.success) {
|
|
81
|
+
throw new Error(`Failed to clear data: ${result.error}`);
|
|
82
|
+
}
|
|
83
|
+
return result.data;
|
|
84
|
+
}
|
|
85
|
+
// Deletes a sheet by ID
|
|
86
|
+
async deleteSheet(spreadsheetId, sheetId) {
|
|
87
|
+
const result = await new GoogleSheetsBubble({
|
|
88
|
+
operation: 'delete_sheet',
|
|
89
|
+
spreadsheet_id: spreadsheetId,
|
|
90
|
+
sheet_id: sheetId,
|
|
91
|
+
}).action();
|
|
92
|
+
if (!result.success) {
|
|
93
|
+
throw new Error(`Failed to delete test sheet: ${result.error}`);
|
|
94
|
+
}
|
|
95
|
+
return result.data;
|
|
96
|
+
}
|
|
97
|
+
async handle(payload) {
|
|
98
|
+
const { testTitle = 'Integration Stress Test' } = payload;
|
|
99
|
+
const results = [];
|
|
100
|
+
const sheetNameWithSpaces = 'Kaus Mode Landing zone';
|
|
101
|
+
// 1. Create Spreadsheet
|
|
102
|
+
const spreadsheet = await this.createTestSpreadsheet(testTitle);
|
|
103
|
+
const spreadsheetId = spreadsheet.spreadsheetId;
|
|
104
|
+
results.push({ operation: 'create_spreadsheet', success: true });
|
|
105
|
+
// 2. Create Sheet with Spaces - NO HELPER
|
|
106
|
+
const sheetId = await this.createSheetWithSpaces(spreadsheetId, sheetNameWithSpaces);
|
|
107
|
+
results.push({ operation: 'add_sheet_with_spaces', success: true });
|
|
108
|
+
// 3. Write Data - RAW DATA WITH NULLS/UNDEFINEDS, NO SANITIZATION
|
|
109
|
+
const rawData = [
|
|
110
|
+
['Name', 'Age', 'Email', 'Department', 'Salary', 'Active'],
|
|
111
|
+
['John Doe', 28, 'john@example.com', 'Engineering', 95000, true],
|
|
112
|
+
['Jane Smith', 34, 'jane@example.com', 'Marketing', 78000, true],
|
|
113
|
+
[null, undefined, 'Mixed', 'Sales', null, false],
|
|
114
|
+
['Bob Johnson', 42, 'bob@example.com', null, 120000, true],
|
|
115
|
+
['Alice Williams', 31, null, 'Engineering', 88000, undefined],
|
|
116
|
+
['End of', 'Test', null, 'HR', 65000, false],
|
|
117
|
+
];
|
|
118
|
+
// RANGE WITH SPACES - NO QUOTE WRAPPING
|
|
119
|
+
const writeRange = `${sheetNameWithSpaces}!A1:F7`;
|
|
120
|
+
await this.writeRawDataWithNulls(spreadsheetId, writeRange, rawData);
|
|
121
|
+
results.push({ operation: 'write_values_with_nulls', success: true });
|
|
122
|
+
// 4. Read Verification - Multiple read operations to test different scenarios
|
|
123
|
+
// 4a. Read entire written range
|
|
124
|
+
const readRange = `${sheetNameWithSpaces}!A1:F7`;
|
|
125
|
+
const readValues = await this.readFromRangeWithSpaces(spreadsheetId, readRange);
|
|
126
|
+
results.push({
|
|
127
|
+
operation: 'read_values_full_range',
|
|
128
|
+
success: !!readValues && readValues.length > 0,
|
|
129
|
+
details: `Read ${readValues?.length || 0} rows with ${readValues?.[0]?.length || 0} columns`,
|
|
130
|
+
});
|
|
131
|
+
// 4b. Read just headers
|
|
132
|
+
const headerRange = `${sheetNameWithSpaces}!A1:F1`;
|
|
133
|
+
const headerValues = await this.readFromRangeWithSpaces(spreadsheetId, headerRange);
|
|
134
|
+
results.push({
|
|
135
|
+
operation: 'read_headers_only',
|
|
136
|
+
success: !!headerValues && headerValues.length > 0,
|
|
137
|
+
details: `Read headers: ${headerValues?.[0]?.join(', ') || 'no headers'}`,
|
|
138
|
+
});
|
|
139
|
+
// 4c. Read single column
|
|
140
|
+
const columnRange = `${sheetNameWithSpaces}!A:A`;
|
|
141
|
+
const columnValues = await this.readFromRangeWithSpaces(spreadsheetId, columnRange);
|
|
142
|
+
results.push({
|
|
143
|
+
operation: 'read_single_column',
|
|
144
|
+
success: !!columnValues && columnValues.length > 0,
|
|
145
|
+
details: `Read ${columnValues?.length || 0} rows from Name column`,
|
|
146
|
+
});
|
|
147
|
+
// 4d. Read partial range (middle rows)
|
|
148
|
+
const partialRange = `${sheetNameWithSpaces}!B3:E5`;
|
|
149
|
+
const partialValues = await this.readFromRangeWithSpaces(spreadsheetId, partialRange);
|
|
150
|
+
results.push({
|
|
151
|
+
operation: 'read_partial_range',
|
|
152
|
+
success: !!partialValues && partialValues.length > 0,
|
|
153
|
+
details: `Read ${partialValues?.length || 0} rows from partial range`,
|
|
154
|
+
});
|
|
155
|
+
// 5. Append Data - RANGE WITH SPACES, NO QUOTE WRAPPING
|
|
156
|
+
const appendRange = `${sheetNameWithSpaces}!A:A`;
|
|
157
|
+
const appendValues = [
|
|
158
|
+
['Charlie Brown', 29, 'charlie@example.com', 'Finance', 72000, true],
|
|
159
|
+
];
|
|
160
|
+
await this.appendToRangeWithSpaces(spreadsheetId, appendRange, appendValues);
|
|
161
|
+
results.push({ operation: 'append_values', success: true });
|
|
162
|
+
// 5a. Read after append to verify
|
|
163
|
+
const postAppendRange = `${sheetNameWithSpaces}!A1:F8`;
|
|
164
|
+
const postAppendValues = await this.readFromRangeWithSpaces(spreadsheetId, postAppendRange);
|
|
165
|
+
results.push({
|
|
166
|
+
operation: 'read_after_append',
|
|
167
|
+
success: !!postAppendValues && postAppendValues.length === 8,
|
|
168
|
+
details: `Read ${postAppendValues?.length || 0} rows after append (expected 8)`,
|
|
169
|
+
});
|
|
170
|
+
// 6. Clear Data - RANGE WITH SPACES, NO QUOTE WRAPPING
|
|
171
|
+
const clearRange = `${sheetNameWithSpaces}!A1:F10`;
|
|
172
|
+
await this.clearRangeWithSpaces(spreadsheetId, clearRange);
|
|
173
|
+
results.push({ operation: 'clear_values', success: true });
|
|
174
|
+
// 7. Delete Sheet
|
|
175
|
+
await this.deleteSheet(spreadsheetId, sheetId);
|
|
176
|
+
results.push({ operation: 'delete_sheet', success: true });
|
|
177
|
+
return {
|
|
178
|
+
spreadsheetId: spreadsheetId,
|
|
179
|
+
spreadsheetUrl: spreadsheet.spreadsheetUrl || '',
|
|
180
|
+
testResults: results,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=google-sheets.integration.flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-sheets.integration.flow.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
import { ServiceBubble } from '../../../types/service-bubble-class.js';
|
|
2
|
+
import { CredentialType } from '@bubblelab/shared-schemas';
|
|
3
|
+
import { GoogleSheetsParamsSchema, GoogleSheetsResultSchema, } from './google-sheets.schema.js';
|
|
4
|
+
import { enhanceErrorMessage } from './google-sheets.utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Google Sheets Service Bubble
|
|
7
|
+
*
|
|
8
|
+
* Comprehensive Google Sheets integration for spreadsheet data management.
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - Automatic range normalization (quotes sheet names with spaces)
|
|
12
|
+
* - Automatic value sanitization (converts null/undefined to empty strings)
|
|
13
|
+
* - Enhanced error messages with helpful hints
|
|
14
|
+
* - Support for all major Google Sheets operations
|
|
15
|
+
*
|
|
16
|
+
* Use cases:
|
|
17
|
+
* - Read and write spreadsheet data with flexible ranges
|
|
18
|
+
* - Batch operations for efficient data processing
|
|
19
|
+
* - Create and manage spreadsheets and sheets
|
|
20
|
+
* - Clear and append data with various formatting options
|
|
21
|
+
* - Handle formulas, formatted values, and raw data
|
|
22
|
+
*
|
|
23
|
+
* Security Features:
|
|
24
|
+
* - OAuth 2.0 authentication with Google
|
|
25
|
+
* - Scoped access permissions for Google Sheets
|
|
26
|
+
* - Secure data validation and sanitization
|
|
27
|
+
* - User-controlled access to spreadsheet data
|
|
28
|
+
*/
|
|
29
|
+
export class GoogleSheetsBubble extends ServiceBubble {
|
|
30
|
+
static type = 'service';
|
|
31
|
+
static service = 'google-sheets';
|
|
32
|
+
static authType = 'oauth';
|
|
33
|
+
static bubbleName = 'google-sheets';
|
|
34
|
+
static schema = GoogleSheetsParamsSchema;
|
|
35
|
+
static resultSchema = GoogleSheetsResultSchema;
|
|
36
|
+
static shortDescription = 'Google Sheets integration for spreadsheet operations';
|
|
37
|
+
static longDescription = `
|
|
38
|
+
Google Sheets service integration for comprehensive spreadsheet data management.
|
|
39
|
+
|
|
40
|
+
Features:
|
|
41
|
+
- Automatic range normalization (sheet names with spaces are automatically quoted)
|
|
42
|
+
- Automatic value sanitization (null/undefined converted to empty strings)
|
|
43
|
+
- Enhanced error messages with helpful hints
|
|
44
|
+
- Support for all major Google Sheets operations
|
|
45
|
+
|
|
46
|
+
Use cases:
|
|
47
|
+
- Read and write spreadsheet data with flexible ranges
|
|
48
|
+
- Batch operations for efficient data processing
|
|
49
|
+
- Create and manage spreadsheets and sheets
|
|
50
|
+
- Clear and append data with various formatting options
|
|
51
|
+
- Handle formulas, formatted values, and raw data
|
|
52
|
+
|
|
53
|
+
Security Features:
|
|
54
|
+
- OAuth 2.0 authentication with Google
|
|
55
|
+
- Scoped access permissions for Google Sheets
|
|
56
|
+
- Secure data validation and sanitization
|
|
57
|
+
- User-controlled access to spreadsheet data
|
|
58
|
+
`;
|
|
59
|
+
static alias = 'sheets';
|
|
60
|
+
constructor(params = {
|
|
61
|
+
operation: 'read_values',
|
|
62
|
+
spreadsheet_id: '',
|
|
63
|
+
range: 'Sheet1!A1:B10',
|
|
64
|
+
}, context) {
|
|
65
|
+
super(params, context);
|
|
66
|
+
}
|
|
67
|
+
async testCredential() {
|
|
68
|
+
const credential = this.chooseCredential();
|
|
69
|
+
if (!credential) {
|
|
70
|
+
throw new Error('Google Sheets credentials are required');
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
// Test the credentials by validating the OAuth access token using Google's tokeninfo endpoint
|
|
74
|
+
const response = await fetch(`https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=${encodeURIComponent(credential)}`);
|
|
75
|
+
// A successful response indicates that the access token is valid
|
|
76
|
+
return response.ok;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async makeSheetsApiRequest(endpoint, method = 'GET', body, headers = {}, spreadsheetId, range) {
|
|
83
|
+
const url = endpoint.startsWith('https://')
|
|
84
|
+
? endpoint
|
|
85
|
+
: `https://sheets.googleapis.com/v4${endpoint}`;
|
|
86
|
+
const requestHeaders = {
|
|
87
|
+
Authorization: `Bearer ${this.chooseCredential()}`,
|
|
88
|
+
'Content-Type': 'application/json',
|
|
89
|
+
...headers,
|
|
90
|
+
};
|
|
91
|
+
const requestInit = {
|
|
92
|
+
method,
|
|
93
|
+
headers: requestHeaders,
|
|
94
|
+
};
|
|
95
|
+
if (body && method !== 'GET') {
|
|
96
|
+
requestInit.body = JSON.stringify(body);
|
|
97
|
+
}
|
|
98
|
+
const response = await fetch(url, requestInit);
|
|
99
|
+
if (!response.ok) {
|
|
100
|
+
const errorText = await response.text();
|
|
101
|
+
// Extract spreadsheet ID from endpoint if not provided
|
|
102
|
+
const extractedSpreadsheetId = spreadsheetId ||
|
|
103
|
+
endpoint.match(/\/spreadsheets\/([^/]+)/)?.[1] ||
|
|
104
|
+
undefined;
|
|
105
|
+
const enhancedError = enhanceErrorMessage(errorText, response.status, response.statusText, extractedSpreadsheetId, range);
|
|
106
|
+
throw new Error(enhancedError);
|
|
107
|
+
}
|
|
108
|
+
// Handle empty responses
|
|
109
|
+
const contentType = response.headers.get('content-type');
|
|
110
|
+
if (contentType && contentType.includes('application/json')) {
|
|
111
|
+
return await response.json();
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return await response.text();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async performAction(context) {
|
|
118
|
+
void context;
|
|
119
|
+
const { operation } = this.params;
|
|
120
|
+
try {
|
|
121
|
+
const result = await (async () => {
|
|
122
|
+
// Cast to output type since base class already parsed input through Zod
|
|
123
|
+
const parsedParams = this.params;
|
|
124
|
+
switch (operation) {
|
|
125
|
+
case 'read_values':
|
|
126
|
+
return await this.readValues(parsedParams);
|
|
127
|
+
case 'write_values':
|
|
128
|
+
return await this.writeValues(parsedParams);
|
|
129
|
+
case 'update_values':
|
|
130
|
+
return await this.updateValues(parsedParams);
|
|
131
|
+
case 'append_values':
|
|
132
|
+
return await this.appendValues(parsedParams);
|
|
133
|
+
case 'clear_values':
|
|
134
|
+
return await this.clearValues(parsedParams);
|
|
135
|
+
case 'batch_read_values':
|
|
136
|
+
return await this.batchReadValues(parsedParams);
|
|
137
|
+
case 'batch_update_values':
|
|
138
|
+
return await this.batchUpdateValues(parsedParams);
|
|
139
|
+
case 'get_spreadsheet_info':
|
|
140
|
+
return await this.getSpreadsheetInfo(parsedParams);
|
|
141
|
+
case 'create_spreadsheet':
|
|
142
|
+
return await this.createSpreadsheet(parsedParams);
|
|
143
|
+
case 'add_sheet':
|
|
144
|
+
return await this.addSheet(parsedParams);
|
|
145
|
+
case 'delete_sheet':
|
|
146
|
+
return await this.deleteSheet(parsedParams);
|
|
147
|
+
default:
|
|
148
|
+
throw new Error(`Unsupported operation: ${operation}`);
|
|
149
|
+
}
|
|
150
|
+
})();
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
return {
|
|
155
|
+
operation,
|
|
156
|
+
success: false,
|
|
157
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async readValues(params) {
|
|
162
|
+
const { spreadsheet_id, range, major_dimension, value_render_option, date_time_render_option, } = params;
|
|
163
|
+
const queryParams = new URLSearchParams({
|
|
164
|
+
majorDimension: major_dimension || 'ROWS',
|
|
165
|
+
valueRenderOption: value_render_option || 'FORMATTED_VALUE',
|
|
166
|
+
dateTimeRenderOption: date_time_render_option || 'SERIAL_NUMBER',
|
|
167
|
+
});
|
|
168
|
+
const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}?${queryParams.toString()}`, 'GET', undefined, {}, undefined, range);
|
|
169
|
+
return {
|
|
170
|
+
operation: 'read_values',
|
|
171
|
+
success: true,
|
|
172
|
+
range: response.range,
|
|
173
|
+
values: response.values || [],
|
|
174
|
+
major_dimension: response.majorDimension,
|
|
175
|
+
error: '',
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
async writeValues(params) {
|
|
179
|
+
const { spreadsheet_id, range, values, major_dimension, value_input_option, include_values_in_response, } = params;
|
|
180
|
+
const queryParams = new URLSearchParams({
|
|
181
|
+
valueInputOption: value_input_option || 'USER_ENTERED',
|
|
182
|
+
includeValuesInResponse: include_values_in_response?.toString() || 'false',
|
|
183
|
+
});
|
|
184
|
+
const body = {
|
|
185
|
+
range,
|
|
186
|
+
majorDimension: major_dimension,
|
|
187
|
+
values,
|
|
188
|
+
};
|
|
189
|
+
const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}?${queryParams.toString()}`, 'PUT', body, {}, undefined, range);
|
|
190
|
+
return {
|
|
191
|
+
operation: 'write_values',
|
|
192
|
+
success: true,
|
|
193
|
+
updated_range: response.updatedRange,
|
|
194
|
+
updated_rows: response.updatedRows,
|
|
195
|
+
updated_columns: response.updatedColumns,
|
|
196
|
+
updated_cells: response.updatedCells,
|
|
197
|
+
updated_data: response.updatedData,
|
|
198
|
+
error: '',
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
async updateValues(params) {
|
|
202
|
+
const { spreadsheet_id, range, values, major_dimension, value_input_option, include_values_in_response, } = params;
|
|
203
|
+
const queryParams = new URLSearchParams({
|
|
204
|
+
valueInputOption: value_input_option || 'USER_ENTERED',
|
|
205
|
+
includeValuesInResponse: include_values_in_response?.toString() || 'false',
|
|
206
|
+
});
|
|
207
|
+
const body = {
|
|
208
|
+
range,
|
|
209
|
+
majorDimension: major_dimension,
|
|
210
|
+
values,
|
|
211
|
+
};
|
|
212
|
+
const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}?${queryParams.toString()}`, 'PUT', body, {}, undefined, range);
|
|
213
|
+
return {
|
|
214
|
+
operation: 'update_values',
|
|
215
|
+
success: true,
|
|
216
|
+
updated_range: response.updatedRange,
|
|
217
|
+
updated_rows: response.updatedRows,
|
|
218
|
+
updated_columns: response.updatedColumns,
|
|
219
|
+
updated_cells: response.updatedCells,
|
|
220
|
+
updated_data: response.updatedData,
|
|
221
|
+
error: '',
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
async appendValues(params) {
|
|
225
|
+
const { spreadsheet_id, range, values, major_dimension, value_input_option, insert_data_option, include_values_in_response, } = params;
|
|
226
|
+
const queryParams = new URLSearchParams({
|
|
227
|
+
valueInputOption: value_input_option || 'USER_ENTERED',
|
|
228
|
+
insertDataOption: insert_data_option || 'INSERT_ROWS',
|
|
229
|
+
includeValuesInResponse: include_values_in_response?.toString() || 'false',
|
|
230
|
+
});
|
|
231
|
+
const body = {
|
|
232
|
+
range,
|
|
233
|
+
majorDimension: major_dimension,
|
|
234
|
+
values,
|
|
235
|
+
};
|
|
236
|
+
const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}:append?${queryParams.toString()}`, 'POST', body, {}, undefined, range);
|
|
237
|
+
return {
|
|
238
|
+
operation: 'append_values',
|
|
239
|
+
success: true,
|
|
240
|
+
table_range: response.tableRange,
|
|
241
|
+
updated_range: response.updates?.updatedRange,
|
|
242
|
+
updated_rows: response.updates?.updatedRows,
|
|
243
|
+
updated_columns: response.updates?.updatedColumns,
|
|
244
|
+
updated_cells: response.updates?.updatedCells,
|
|
245
|
+
error: '',
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
async clearValues(params) {
|
|
249
|
+
const { spreadsheet_id, range } = params;
|
|
250
|
+
const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}:clear`, 'POST', {}, {}, undefined, range);
|
|
251
|
+
return {
|
|
252
|
+
operation: 'clear_values',
|
|
253
|
+
success: true,
|
|
254
|
+
cleared_range: response.clearedRange,
|
|
255
|
+
error: '',
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
async batchReadValues(params) {
|
|
259
|
+
const { spreadsheet_id, ranges, major_dimension, value_render_option, date_time_render_option, } = params;
|
|
260
|
+
const queryParams = new URLSearchParams({
|
|
261
|
+
majorDimension: major_dimension || 'ROWS',
|
|
262
|
+
valueRenderOption: value_render_option || 'FORMATTED_VALUE',
|
|
263
|
+
dateTimeRenderOption: date_time_render_option || 'SERIAL_NUMBER',
|
|
264
|
+
});
|
|
265
|
+
// Add multiple ranges
|
|
266
|
+
ranges.forEach((range) => queryParams.append('ranges', range));
|
|
267
|
+
const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values:batchGet?${queryParams.toString()}`);
|
|
268
|
+
return {
|
|
269
|
+
operation: 'batch_read_values',
|
|
270
|
+
success: true,
|
|
271
|
+
value_ranges: response.valueRanges || [],
|
|
272
|
+
error: '',
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
async batchUpdateValues(params) {
|
|
276
|
+
const { spreadsheet_id, value_ranges, value_input_option, include_values_in_response, } = params;
|
|
277
|
+
const body = {
|
|
278
|
+
valueInputOption: value_input_option,
|
|
279
|
+
includeValuesInResponse: include_values_in_response,
|
|
280
|
+
data: value_ranges.map((vr) => ({
|
|
281
|
+
range: vr.range,
|
|
282
|
+
majorDimension: vr.major_dimension,
|
|
283
|
+
values: vr.values,
|
|
284
|
+
})),
|
|
285
|
+
};
|
|
286
|
+
const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values:batchUpdate`, 'POST', body);
|
|
287
|
+
return {
|
|
288
|
+
operation: 'batch_update_values',
|
|
289
|
+
success: true,
|
|
290
|
+
total_updated_rows: response.totalUpdatedRows,
|
|
291
|
+
total_updated_columns: response.totalUpdatedColumns,
|
|
292
|
+
total_updated_cells: response.totalUpdatedCells,
|
|
293
|
+
total_updated_sheets: response.totalUpdatedSheets,
|
|
294
|
+
responses: response.responses?.map((r) => ({
|
|
295
|
+
updated_range: r.updatedRange,
|
|
296
|
+
updated_rows: r.updatedRows,
|
|
297
|
+
updated_columns: r.updatedColumns,
|
|
298
|
+
updated_cells: r.updatedCells,
|
|
299
|
+
})),
|
|
300
|
+
error: '',
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
async getSpreadsheetInfo(params) {
|
|
304
|
+
const { spreadsheet_id, include_grid_data } = params;
|
|
305
|
+
const queryParams = new URLSearchParams();
|
|
306
|
+
if (include_grid_data) {
|
|
307
|
+
queryParams.set('includeGridData', 'true');
|
|
308
|
+
}
|
|
309
|
+
const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}?${queryParams.toString()}`);
|
|
310
|
+
return {
|
|
311
|
+
operation: 'get_spreadsheet_info',
|
|
312
|
+
success: true,
|
|
313
|
+
spreadsheet: response,
|
|
314
|
+
error: '',
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
async createSpreadsheet(params) {
|
|
318
|
+
const { title, sheet_titles } = params;
|
|
319
|
+
// sheet_titles has a default value of ['Sheet1'] from schema, so this is a safety check
|
|
320
|
+
const sheets = sheet_titles ?? ['Sheet1'];
|
|
321
|
+
const body = {
|
|
322
|
+
properties: {
|
|
323
|
+
title,
|
|
324
|
+
},
|
|
325
|
+
sheets: sheets.map((sheetTitle, index) => ({
|
|
326
|
+
properties: {
|
|
327
|
+
title: sheetTitle,
|
|
328
|
+
index,
|
|
329
|
+
sheetType: 'GRID',
|
|
330
|
+
gridProperties: {
|
|
331
|
+
rowCount: 1000,
|
|
332
|
+
columnCount: 26,
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
})),
|
|
336
|
+
};
|
|
337
|
+
const response = await this.makeSheetsApiRequest('/spreadsheets', 'POST', body);
|
|
338
|
+
return {
|
|
339
|
+
operation: 'create_spreadsheet',
|
|
340
|
+
success: true,
|
|
341
|
+
spreadsheet: response,
|
|
342
|
+
error: '',
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
async addSheet(params) {
|
|
346
|
+
const { spreadsheet_id, sheet_title, row_count, column_count } = params;
|
|
347
|
+
const body = {
|
|
348
|
+
requests: [
|
|
349
|
+
{
|
|
350
|
+
addSheet: {
|
|
351
|
+
properties: {
|
|
352
|
+
title: sheet_title,
|
|
353
|
+
sheetType: 'GRID',
|
|
354
|
+
gridProperties: {
|
|
355
|
+
rowCount: row_count,
|
|
356
|
+
columnCount: column_count,
|
|
357
|
+
},
|
|
358
|
+
},
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
],
|
|
362
|
+
};
|
|
363
|
+
const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}:batchUpdate`, 'POST', body);
|
|
364
|
+
const addSheetResponse = response.replies?.[0]?.addSheet;
|
|
365
|
+
return {
|
|
366
|
+
operation: 'add_sheet',
|
|
367
|
+
success: true,
|
|
368
|
+
sheet_id: addSheetResponse?.properties?.sheetId,
|
|
369
|
+
sheet_title: addSheetResponse?.properties?.title,
|
|
370
|
+
error: '',
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
async deleteSheet(params) {
|
|
374
|
+
const { spreadsheet_id, sheet_id } = params;
|
|
375
|
+
const body = {
|
|
376
|
+
requests: [
|
|
377
|
+
{
|
|
378
|
+
deleteSheet: {
|
|
379
|
+
sheetId: sheet_id,
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
],
|
|
383
|
+
};
|
|
384
|
+
await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}:batchUpdate`, 'POST', body);
|
|
385
|
+
return {
|
|
386
|
+
operation: 'delete_sheet',
|
|
387
|
+
success: true,
|
|
388
|
+
deleted_sheet_id: sheet_id,
|
|
389
|
+
error: '',
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
chooseCredential() {
|
|
393
|
+
const { credentials } = this.params;
|
|
394
|
+
if (!credentials || typeof credentials !== 'object') {
|
|
395
|
+
throw new Error('No Google Sheets credentials provided');
|
|
396
|
+
}
|
|
397
|
+
// Google Sheets bubble uses GOOGLE_SHEETS_CRED credentials
|
|
398
|
+
return credentials[CredentialType.GOOGLE_SHEETS_CRED];
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=google-sheets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-sheets.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/google-sheets/google-sheets.ts"],"names":[],"mappings":"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"}
|