n8n-nodes-base 1.92.0 → 1.94.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.
- package/dist/credentials/AirtopApi.credentials.js +2 -1
- package/dist/credentials/AirtopApi.credentials.js.map +1 -1
- package/dist/credentials/JinaAiApi.credentials.js +1 -1
- package/dist/credentials/JinaAiApi.credentials.js.map +1 -1
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js +0 -9
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js.map +1 -1
- package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js +13 -0
- package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js.map +1 -1
- package/dist/credentials/Snowflake.credentials.js +46 -2
- package/dist/credentials/Snowflake.credentials.js.map +1 -1
- package/dist/known/credentials.json +10 -1
- package/dist/known/nodes.json +20 -4
- package/dist/methods/defined.json +6 -0
- package/dist/methods/referenced.json +3 -0
- package/dist/nodes/Airtop/Airtop.node.js +14 -8
- package/dist/nodes/Airtop/Airtop.node.js.map +1 -1
- package/dist/nodes/Airtop/GenericFunctions.js +87 -15
- package/dist/nodes/Airtop/GenericFunctions.js.map +1 -1
- package/dist/nodes/Airtop/actions/common/fields.js +9 -0
- package/dist/nodes/Airtop/actions/common/fields.js.map +1 -1
- package/dist/nodes/Airtop/actions/common/output.utils.js +79 -0
- package/dist/nodes/Airtop/actions/common/output.utils.js.map +1 -0
- package/dist/nodes/Airtop/actions/common/session.utils.js +2 -2
- package/dist/nodes/Airtop/actions/common/session.utils.js.map +1 -1
- package/dist/nodes/Airtop/actions/extraction/getPaginated.operation.js +13 -4
- package/dist/nodes/Airtop/actions/extraction/getPaginated.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/extraction/query.operation.js +21 -3
- package/dist/nodes/Airtop/actions/extraction/query.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/extraction/scrape.operation.js +2 -1
- package/dist/nodes/Airtop/actions/extraction/scrape.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/file/File.resource.js +104 -0
- package/dist/nodes/Airtop/actions/file/File.resource.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/delete.operation.js +60 -0
- package/dist/nodes/Airtop/actions/file/delete.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/get.operation.js +91 -0
- package/dist/nodes/Airtop/actions/file/get.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/getMany.operation.js +100 -0
- package/dist/nodes/Airtop/actions/file/getMany.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/helpers.js +199 -0
- package/dist/nodes/Airtop/actions/file/helpers.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/load.operation.js +85 -0
- package/dist/nodes/Airtop/actions/file/load.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/upload.operation.js +186 -0
- package/dist/nodes/Airtop/actions/file/upload.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/interaction/Interaction.resource.js +22 -1
- package/dist/nodes/Airtop/actions/interaction/Interaction.resource.js.map +1 -1
- package/dist/nodes/Airtop/actions/interaction/fill.operation.js +89 -0
- package/dist/nodes/Airtop/actions/interaction/fill.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/interaction/scroll.operation.js +219 -0
- package/dist/nodes/Airtop/actions/interaction/scroll.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/node.type.js.map +1 -1
- package/dist/nodes/Airtop/actions/router.js +13 -4
- package/dist/nodes/Airtop/actions/router.js.map +1 -1
- package/dist/nodes/Airtop/actions/session/create.operation.js +85 -32
- package/dist/nodes/Airtop/actions/session/create.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/window/Window.resource.js +2 -1
- package/dist/nodes/Airtop/actions/window/Window.resource.js.map +1 -1
- package/dist/nodes/Airtop/actions/window/create.operation.js +1 -1
- package/dist/nodes/Airtop/actions/window/create.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/window/takeScreenshot.operation.js +26 -3
- package/dist/nodes/Airtop/actions/window/takeScreenshot.operation.js.map +1 -1
- package/dist/nodes/Airtop/constants.js +38 -5
- package/dist/nodes/Airtop/constants.js.map +1 -1
- package/dist/nodes/Airtop/countries.js +1026 -0
- package/dist/nodes/Airtop/countries.js.map +1 -0
- package/dist/nodes/Airtop/transport/index.js +6 -3
- package/dist/nodes/Airtop/transport/index.js.map +1 -1
- package/dist/nodes/Airtop/transport/types.js.map +1 -1
- package/dist/nodes/Aws/IAM/AwsIam.node.js +95 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.js.map +1 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.json +18 -0
- package/dist/nodes/Aws/IAM/AwsIam.svg +18 -0
- package/dist/nodes/Aws/IAM/descriptions/common.js +188 -0
- package/dist/nodes/Aws/IAM/descriptions/common.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js +175 -0
- package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js +66 -0
- package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js +50 -0
- package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js +47 -0
- package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js +70 -0
- package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/index.js +42 -0
- package/dist/nodes/Aws/IAM/descriptions/index.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js +231 -0
- package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js +47 -0
- package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js +118 -0
- package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js +66 -0
- package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js +74 -0
- package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js +68 -0
- package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/constants.js +47 -0
- package/dist/nodes/Aws/IAM/helpers/constants.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/errorHandler.js +90 -0
- package/dist/nodes/Aws/IAM/helpers/errorHandler.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/types.js +17 -0
- package/dist/nodes/Aws/IAM/helpers/types.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/utils.js +279 -0
- package/dist/nodes/Aws/IAM/helpers/utils.js.map +1 -0
- package/dist/nodes/Aws/IAM/methods/index.js +39 -0
- package/dist/nodes/Aws/IAM/methods/index.js.map +1 -0
- package/dist/nodes/Aws/IAM/methods/listSearch.js +132 -0
- package/dist/nodes/Aws/IAM/methods/listSearch.js.map +1 -0
- package/dist/nodes/Aws/IAM/transport/index.js +64 -0
- package/dist/nodes/Aws/IAM/transport/index.js.map +1 -0
- package/dist/nodes/Cron/Cron.node.js +1 -1
- package/dist/nodes/Cron/Cron.node.js.map +1 -1
- package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js +2 -2
- package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js.map +1 -1
- package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js +2 -2
- package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js.map +1 -1
- package/dist/nodes/Evaluation/Evaluation/Description.node.js +146 -0
- package/dist/nodes/Evaluation/Evaluation/Description.node.js.map +1 -0
- package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js +117 -0
- package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js.map +1 -0
- package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js +187 -0
- package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js.map +1 -0
- package/dist/nodes/Evaluation/methods/index.js +42 -0
- package/dist/nodes/Evaluation/methods/index.js.map +1 -0
- package/dist/nodes/Evaluation/methods/loadOptions.js +40 -0
- package/dist/nodes/Evaluation/methods/loadOptions.js.map +1 -0
- package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js +119 -0
- package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js.map +1 -0
- package/dist/nodes/Evaluation/utils/evaluationUtils.js +171 -0
- package/dist/nodes/Evaluation/utils/evaluationUtils.js.map +1 -0
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js +4 -3
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js.map +1 -1
- package/dist/nodes/Form/common.descriptions.js +2 -2
- package/dist/nodes/Form/common.descriptions.js.map +1 -1
- package/dist/nodes/Google/Drive/v2/actions/file/upload.operation.js +4 -1
- package/dist/nodes/Google/Drive/v2/actions/file/upload.operation.js.map +1 -1
- package/dist/nodes/Google/Firebase/CloudFirestore/GenericFunctions.js +1 -2
- package/dist/nodes/Google/Firebase/CloudFirestore/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js +113 -107
- package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js +52 -106
- package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js +97 -0
- package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js.map +1 -0
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js +20 -17
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js.map +1 -1
- package/dist/nodes/Google/YouTube/YouTube.node.js +4 -2
- package/dist/nodes/Google/YouTube/YouTube.node.js.map +1 -1
- package/dist/nodes/HttpRequest/GenericFunctions.js +1 -1
- package/dist/nodes/HttpRequest/GenericFunctions.js.map +1 -1
- package/dist/nodes/Interval/Interval.node.js +1 -1
- package/dist/nodes/Interval/Interval.node.js.map +1 -1
- package/dist/nodes/Jira/Jira.node.js +34 -15
- package/dist/nodes/Jira/Jira.node.js.map +1 -1
- package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js +2 -2
- package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js.map +1 -1
- package/dist/nodes/MQTT/MqttTrigger.node.js +2 -2
- package/dist/nodes/MQTT/MqttTrigger.node.js.map +1 -1
- package/dist/nodes/ManualTrigger/ManualTrigger.node.js +1 -1
- package/dist/nodes/ManualTrigger/ManualTrigger.node.js.map +1 -1
- package/dist/nodes/Merge/Merge.node.js +3 -2
- package/dist/nodes/Merge/Merge.node.js.map +1 -1
- package/dist/nodes/Merge/v3/actions/mode/combineBySql.js +42 -4
- package/dist/nodes/Merge/v3/actions/mode/combineBySql.js.map +1 -1
- package/dist/nodes/Merge/v3/actions/versionDescription.js +1 -1
- package/dist/nodes/Merge/v3/actions/versionDescription.js.map +1 -1
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js +93 -0
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharepoint.node.json +18 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js +190 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js +108 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js +62 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js +129 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js +77 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/index.js +45 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/index.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js +175 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js +62 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js +83 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js +203 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js +99 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js +65 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js +105 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js +17 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/utils.js +252 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/utils.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/index.js +42 -0
- package/dist/nodes/Microsoft/SharePoint/methods/index.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js +222 -0
- package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js +104 -0
- package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/test/credentials.js +54 -0
- package/dist/nodes/Microsoft/SharePoint/test/credentials.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/transport/index.js +46 -0
- package/dist/nodes/Microsoft/SharePoint/transport/index.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js +387 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.json +18 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.js +17 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js +147 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/v2/transport/index.js.map +1 -1
- package/dist/nodes/MongoDb/GenericFunctions.js +9 -2
- package/dist/nodes/MongoDb/GenericFunctions.js.map +1 -1
- package/dist/nodes/MongoDb/MongoDb.node.js +25 -5
- package/dist/nodes/MongoDb/MongoDb.node.js.map +1 -1
- package/dist/nodes/PostBin/BinDescription.js +1 -1
- package/dist/nodes/PostBin/BinDescription.js.map +1 -1
- package/dist/nodes/PostBin/GenericFunctions.js +5 -5
- package/dist/nodes/PostBin/GenericFunctions.js.map +1 -1
- package/dist/nodes/PostBin/PostBin.node.js +1 -1
- package/dist/nodes/PostBin/PostBin.node.js.map +1 -1
- package/dist/nodes/PostBin/RequestDescription.js +2 -2
- package/dist/nodes/PostBin/RequestDescription.js.map +1 -1
- package/dist/nodes/Postgres/PostgresTrigger.node.js +2 -2
- package/dist/nodes/Postgres/PostgresTrigger.node.js.map +1 -1
- package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js +2 -2
- package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js.map +1 -1
- package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js +8 -3
- package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js.map +1 -1
- package/dist/nodes/RespondToWebhook/utils.js +43 -0
- package/dist/nodes/RespondToWebhook/utils.js.map +1 -0
- package/dist/nodes/Schedule/ScheduleTrigger.node.js +1 -1
- package/dist/nodes/Schedule/ScheduleTrigger.node.js.map +1 -1
- package/dist/nodes/Snowflake/GenericFunctions.js +34 -2
- package/dist/nodes/Snowflake/GenericFunctions.js.map +1 -1
- package/dist/nodes/Snowflake/Snowflake.node.js +5 -7
- package/dist/nodes/Snowflake/Snowflake.node.js.map +1 -1
- package/dist/nodes/SseTrigger/SseTrigger.node.js +2 -2
- package/dist/nodes/SseTrigger/SseTrigger.node.js.map +1 -1
- package/dist/nodes/Telegram/Telegram.node.js +5 -1
- package/dist/nodes/Telegram/Telegram.node.js.map +1 -1
- package/dist/nodes/Transform/Summarize/utils.js +2 -1
- package/dist/nodes/Transform/Summarize/utils.js.map +1 -1
- package/dist/test/setup.js +1 -0
- package/dist/test/setup.js.map +1 -1
- package/dist/types/credentials.json +7 -7
- package/dist/types/nodes.json +27 -23
- package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js +12 -2
- package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js.map +1 -1
- package/package.json +15 -12
- package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.js +0 -119
- package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.js.map +0 -1
- package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.json +0 -14
- /package/dist/{credentials/icons/SharePoint.svg → nodes/Microsoft/SharePoint/microsoftSharePoint.svg} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/Google/Sheet/GoogleSheetsTrigger.node.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tINodeExecutionData,\n\tINodeType,\n\tINodeTypeDescription,\n\tIPollFunctions,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nimport {\n\tarrayOfArraysToJson,\n\tBINARY_MIME_TYPE,\n\tcompareRevisions,\n\tgetRevisionFile,\n\tsheetBinaryToArrayOfArrays,\n} from './GoogleSheetsTrigger.utils';\nimport { GoogleSheet } from './v2/helpers/GoogleSheet';\nimport type { ResourceLocator, ValueRenderOption } from './v2/helpers/GoogleSheets.types';\nimport { sheetsSearch, spreadSheetsSearch } from './v2/methods/listSearch';\nimport { getSheetHeaderRowAndSkipEmpty } from './v2/methods/loadOptions';\nimport { apiRequest } from './v2/transport';\nimport { GOOGLE_DRIVE_FILE_URL_REGEX, GOOGLE_SHEETS_SHEET_URL_REGEX } from '../constants';\n\nexport class GoogleSheetsTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Google Sheets Trigger',\n\t\tname: 'googleSheetsTrigger',\n\t\ticon: 'file:googleSheets.svg',\n\t\tgroup: ['trigger'],\n\t\tversion: 1,\n\t\tsubtitle: '={{($parameter[\"event\"])}}',\n\t\tdescription: 'Starts the workflow when Google Sheets events occur',\n\t\tdefaults: {\n\t\t\tname: 'Google Sheets Trigger',\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'googleSheetsTriggerOAuth2Api',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tauthentication: ['triggerOAuth2'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tpolling: true,\n\t\tproperties: [\n\t\t\t// trigger shared logic with GoogleSheets node, leaving this here for compatibility\n\t\t\t{\n\t\t\t\tdisplayName: 'Authentication',\n\t\t\t\tname: 'authentication',\n\t\t\t\ttype: 'hidden',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased\n\t\t\t\t\t\tname: 'OAuth2 (recommended)',\n\t\t\t\t\t\tvalue: 'triggerOAuth2',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'triggerOAuth2',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Document',\n\t\t\t\tname: 'documentId',\n\t\t\t\ttype: 'resourceLocator',\n\t\t\t\tdefault: { mode: 'list', value: '' },\n\t\t\t\trequired: true,\n\t\t\t\tmodes: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'From List',\n\t\t\t\t\t\tname: 'list',\n\t\t\t\t\t\ttype: 'list',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tsearchListMethod: 'spreadSheetsSearch',\n\t\t\t\t\t\t\tsearchable: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'By URL',\n\t\t\t\t\t\tname: 'url',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\textractValue: {\n\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\tregex: GOOGLE_DRIVE_FILE_URL_REGEX,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalidation: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tregex: GOOGLE_DRIVE_FILE_URL_REGEX,\n\t\t\t\t\t\t\t\t\terrorMessage: 'Not a valid Google Drive File URL',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'By ID',\n\t\t\t\t\t\tname: 'id',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tvalidation: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tregex: '[a-zA-Z0-9\\\\-_]{2,}',\n\t\t\t\t\t\t\t\t\terrorMessage: 'Not a valid Google Drive File ID',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\turl: '=https://docs.google.com/spreadsheets/d/{{$value}}/edit',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Sheet',\n\t\t\t\tname: 'sheetName',\n\t\t\t\ttype: 'resourceLocator',\n\t\t\t\tdefault: { mode: 'list', value: '' },\n\t\t\t\t// default: '', //empty string set to progresivly reveal fields\n\t\t\t\trequired: true,\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tloadOptionsDependsOn: ['documentId.value'],\n\t\t\t\t},\n\t\t\t\tmodes: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'From List',\n\t\t\t\t\t\tname: 'list',\n\t\t\t\t\t\ttype: 'list',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tsearchListMethod: 'sheetsSearch',\n\t\t\t\t\t\t\tsearchable: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'By URL',\n\t\t\t\t\t\tname: 'url',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\textractValue: {\n\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\tregex: GOOGLE_SHEETS_SHEET_URL_REGEX,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalidation: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tregex: GOOGLE_SHEETS_SHEET_URL_REGEX,\n\t\t\t\t\t\t\t\t\terrorMessage: 'Not a valid Sheet URL',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'By ID',\n\t\t\t\t\t\tname: 'id',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tvalidation: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tregex: '((gid=)?[0-9]{1,})',\n\t\t\t\t\t\t\t\t\terrorMessage: 'Not a valid Sheet ID',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Trigger On',\n\t\t\t\tname: 'event',\n\t\t\t\ttype: 'options',\n\t\t\t\tdescription:\n\t\t\t\t\t\"It will be triggered also by newly created columns (if the 'Columns to Watch' option is not set)\",\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Row Added',\n\t\t\t\t\t\tvalue: 'rowAdded',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Row Updated',\n\t\t\t\t\t\tvalue: 'rowUpdate',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Row Added or Updated',\n\t\t\t\t\t\tvalue: 'anyUpdate',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'anyUpdate',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Include in Output',\n\t\t\t\tname: 'includeInOutput',\n\t\t\t\ttype: 'options',\n\t\t\t\tdefault: 'new',\n\t\t\t\tdescription: 'This option will be effective only when automatically executing the workflow',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'New Version',\n\t\t\t\t\t\tvalue: 'new',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Old Version',\n\t\t\t\t\t\tvalue: 'old',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Both Versions',\n\t\t\t\t\t\tvalue: 'both',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\thide: {\n\t\t\t\t\t\tevent: ['rowAdded'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add option',\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Columns to Watch',\n\t\t\t\t\t\tname: 'columnsToWatch',\n\t\t\t\t\t\ttype: 'multiOptions',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tloadOptionsDependsOn: ['sheetName.value'],\n\t\t\t\t\t\t\tloadOptionsMethod: 'getSheetHeaderRowAndSkipEmpty',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t'/event': ['anyUpdate', 'rowUpdate'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Data Location on Sheet',\n\t\t\t\t\t\tname: 'dataLocationOnSheet',\n\t\t\t\t\t\ttype: 'fixedCollection',\n\t\t\t\t\t\tplaceholder: 'Select Range',\n\t\t\t\t\t\tdefault: { values: { rangeDefinition: 'specifyRangeA1' } },\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Values',\n\t\t\t\t\t\t\t\tname: 'values',\n\t\t\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdisplayName: 'Range Definition',\n\t\t\t\t\t\t\t\t\t\tname: 'rangeDefinition',\n\t\t\t\t\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'Specify Range (A1 Notation)',\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: 'specifyRangeA1',\n\t\t\t\t\t\t\t\t\t\t\t\tdescription: 'Manually specify the data range',\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'Specify Range (Rows)',\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: 'specifyRange',\n\t\t\t\t\t\t\t\t\t\t\t\tdescription: 'Manually specify the data range',\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdisplayName: 'Header Row',\n\t\t\t\t\t\t\t\t\t\tname: 'headerRow',\n\t\t\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\t\t\t\t\tminValue: 1,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tdefault: 1,\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t'Index of the row which contains the keys. Starts at 1. The incoming node data is matched to the keys for assignment. The matching is case sensitive.',\n\t\t\t\t\t\t\t\t\t\thint: 'First row is row 1',\n\t\t\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\t\t\trangeDefinition: ['specifyRange'],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdisplayName: 'First Data Row',\n\t\t\t\t\t\t\t\t\t\tname: 'firstDataRow',\n\t\t\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\t\t\t\t\tminValue: 1,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tdefault: 2,\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t'Index of the first row which contains the actual data and not the keys. Starts with 1.',\n\t\t\t\t\t\t\t\t\t\thint: 'First row is row 1',\n\t\t\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\t\t\trangeDefinition: ['specifyRange'],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdisplayName: 'Range',\n\t\t\t\t\t\t\t\t\t\tname: 'range',\n\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\t\t\tplaceholder: 'A:Z',\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t'The table range to read from or to append data to. See the Google <a href=\"https://developers.google.com/sheets/api/guides/values#writing\">documentation</a> for the details.',\n\t\t\t\t\t\t\t\t\t\thint: 'You can specify both the rows and the columns, e.g. C4:E7',\n\t\t\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\t\t\trangeDefinition: ['specifyRangeA1'],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Value Render',\n\t\t\t\t\t\tname: 'valueRender',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Unformatted',\n\t\t\t\t\t\t\t\tvalue: 'UNFORMATTED_VALUE',\n\t\t\t\t\t\t\t\tdescription: 'Values will be calculated, but not formatted in the reply',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Formatted',\n\t\t\t\t\t\t\t\tvalue: 'FORMATTED_VALUE',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Values will be formatted and calculated according to the cell's formatting (based on the spreadsheet's locale)\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Formula',\n\t\t\t\t\t\t\t\tvalue: 'FORMULA',\n\t\t\t\t\t\t\t\tdescription: 'Values will not be calculated. The reply will include the formulas.',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: 'UNFORMATTED_VALUE',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Determines how values will be rendered in the output. <a href=\"https://developers.google.com/sheets/api/reference/rest/v4/ValueRenderOption\" target=\"_blank\">More info</a>.',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\thide: {\n\t\t\t\t\t\t\t\t'/event': ['anyUpdate', 'rowUpdate'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'DateTime Render',\n\t\t\t\t\t\tname: 'dateTimeRenderOption',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Serial Number',\n\t\t\t\t\t\t\t\tvalue: 'SERIAL_NUMBER',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t'Fields will be returned as doubles in \"serial number\" format (as popularized by Lotus 1-2-3)',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Formatted String',\n\t\t\t\t\t\t\t\tvalue: 'FORMATTED_STRING',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t'Fields will be rendered as strings in their given number format (which depends on the spreadsheet locale)',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: 'SERIAL_NUMBER',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Determines how dates should be rendered in the output. <a href=\"https://developers.google.com/sheets/api/reference/rest/v4/DateTimeRenderOption\" target=\"_blank\">More info</a>.',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\thide: {\n\t\t\t\t\t\t\t\t'/event': ['anyUpdate', 'rowUpdate'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tmethods = {\n\t\tlistSearch: { spreadSheetsSearch, sheetsSearch },\n\t\tloadOptions: { getSheetHeaderRowAndSkipEmpty },\n\t};\n\n\tasync poll(this: IPollFunctions): Promise<INodeExecutionData[][] | null> {\n\t\ttry {\n\t\t\tconst workflowStaticData = this.getWorkflowStaticData('node');\n\t\t\tconst event = this.getNodeParameter('event', 0) as string;\n\n\t\t\tconst documentId = this.getNodeParameter('documentId', undefined, {\n\t\t\t\textractValue: true,\n\t\t\t}) as string;\n\n\t\t\tconst sheetWithinDocument = this.getNodeParameter('sheetName', undefined, {\n\t\t\t\textractValue: true,\n\t\t\t}) as string;\n\t\t\tconst { mode: sheetMode } = this.getNodeParameter('sheetName', 0) as {\n\t\t\t\tmode: ResourceLocator;\n\t\t\t};\n\n\t\t\tconst googleSheet = new GoogleSheet(documentId, this);\n\t\t\tconst { sheetId, title: sheetName } = await googleSheet.spreadsheetGetSheet(\n\t\t\t\tthis.getNode(),\n\t\t\t\tsheetMode,\n\t\t\t\tsheetWithinDocument,\n\t\t\t);\n\n\t\t\tconst options = this.getNodeParameter('options') as IDataObject;\n\n\t\t\t// If the documentId or sheetId changed, reset the workflow static data\n\t\t\tif (\n\t\t\t\tthis.getMode() !== 'manual' &&\n\t\t\t\t(workflowStaticData.documentId !== documentId || workflowStaticData.sheetId !== sheetId)\n\t\t\t) {\n\t\t\t\tworkflowStaticData.documentId = documentId;\n\t\t\t\tworkflowStaticData.sheetId = sheetId;\n\t\t\t\tworkflowStaticData.lastRevision = undefined;\n\t\t\t\tworkflowStaticData.lastRevisionLink = undefined;\n\t\t\t\tworkflowStaticData.lastIndexChecked = undefined;\n\t\t\t}\n\n\t\t\tconst previousRevision = workflowStaticData.lastRevision as number;\n\t\t\tconst previousRevisionLink = workflowStaticData.lastRevisionLink as string;\n\n\t\t\tif (event !== 'rowAdded') {\n\t\t\t\tlet pageToken;\n\t\t\t\tdo {\n\t\t\t\t\tconst { revisions, nextPageToken } = await apiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfields: 'revisions(id, exportLinks), nextPageToken',\n\t\t\t\t\t\t\tpageToken,\n\t\t\t\t\t\t\tpageSize: 1000,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t`https://www.googleapis.com/drive/v3/files/${documentId}/revisions`,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (nextPageToken) {\n\t\t\t\t\t\tpageToken = nextPageToken as string;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpageToken = undefined;\n\n\t\t\t\t\t\tconst lastRevision = +revisions[revisions.length - 1].id;\n\t\t\t\t\t\tif (lastRevision <= previousRevision) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this.getMode() !== 'manual') {\n\t\t\t\t\t\t\t\tworkflowStaticData.lastRevision = lastRevision;\n\t\t\t\t\t\t\t\tworkflowStaticData.lastRevisionLink =\n\t\t\t\t\t\t\t\t\trevisions[revisions.length - 1].exportLinks[BINARY_MIME_TYPE];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} while (pageToken);\n\t\t\t}\n\n\t\t\tlet range = 'A:ZZZ';\n\t\t\tlet keyRow = 1;\n\t\t\tlet startIndex = 2;\n\n\t\t\tlet rangeDefinition = '';\n\n\t\t\tconst [from, to] = range.split(':');\n\t\t\tlet keyRange = `${from}${keyRow}:${to}${keyRow}`;\n\t\t\tlet rangeToCheck = `${from}${keyRow}:${to}`;\n\n\t\t\tif (options.dataLocationOnSheet) {\n\t\t\t\tconst locationDefine = (options.dataLocationOnSheet as IDataObject).values as IDataObject;\n\t\t\t\trangeDefinition = locationDefine.rangeDefinition as string;\n\n\t\t\t\tif (rangeDefinition === 'specifyRangeA1') {\n\t\t\t\t\tif (locationDefine.range === '') {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t\"The field 'Range' is empty, please provide a range\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trange = locationDefine.range as string;\n\t\t\t\t}\n\n\t\t\t\tif (rangeDefinition === 'specifyRange') {\n\t\t\t\t\tkeyRow = parseInt(locationDefine.headerRow as string, 10);\n\t\t\t\t\tstartIndex = parseInt(locationDefine.firstDataRow as string, 10);\n\t\t\t\t}\n\n\t\t\t\tconst [rangeFrom, rangeTo] = range.split(':');\n\t\t\t\tconst cellDataFrom = rangeFrom.match(/([a-zA-Z]{1,10})([0-9]{0,10})/) || [];\n\t\t\t\tconst cellDataTo = rangeTo.match(/([a-zA-Z]{1,10})([0-9]{0,10})/) || [];\n\n\t\t\t\tif (rangeDefinition === 'specifyRangeA1' && cellDataFrom[2] !== undefined) {\n\t\t\t\t\tkeyRange = `${cellDataFrom[1]}${+cellDataFrom[2]}:${cellDataTo[1]}${+cellDataFrom[2]}`;\n\t\t\t\t\trangeToCheck = `${cellDataFrom[1]}${+cellDataFrom[2] + 1}:${rangeTo}`;\n\t\t\t\t} else {\n\t\t\t\t\tkeyRange = `${cellDataFrom[1]}${keyRow}:${cellDataTo[1]}${keyRow}`;\n\t\t\t\t\trangeToCheck = `${cellDataFrom[1]}${keyRow}:${rangeTo}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst qs: IDataObject = {};\n\n\t\t\tObject.assign(qs, options);\n\n\t\t\tif (event === 'rowAdded') {\n\t\t\t\tconst [columns] = ((\n\t\t\t\t\t(await apiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t`/v4/spreadsheets/${documentId}/values/${encodeURIComponent(sheetName)}!${keyRange}`,\n\t\t\t\t\t)) as IDataObject\n\t\t\t\t).values as string[][]) || [[]];\n\n\t\t\t\tif (!columns?.length) {\n\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t'Could not retrieve the columns from key row',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst sheetData = await googleSheet.getData(\n\t\t\t\t\t`${sheetName}!${rangeToCheck}`,\n\t\t\t\t\t(options.valueRender as ValueRenderOption) || 'UNFORMATTED_VALUE',\n\t\t\t\t\t(options.dateTimeRenderOption as string) || 'FORMATTED_STRING',\n\t\t\t\t);\n\n\t\t\t\tif (Array.isArray(sheetData) && sheetData.length !== 0) {\n\t\t\t\t\tsheetData.splice(0, 1); // Remove header row\n\t\t\t\t}\n\n\t\t\t\tlet dataStartIndex = 0;\n\t\t\t\tif (rangeDefinition === 'specifyRange' && keyRow < startIndex) {\n\t\t\t\t\tdataStartIndex = startIndex - keyRow - 1;\n\t\t\t\t}\n\n\t\t\t\tif (this.getMode() === 'manual') {\n\t\t\t\t\tif (Array.isArray(sheetData)) {\n\t\t\t\t\t\tconst sheetDataFromStartIndex = sheetData.slice(dataStartIndex);\n\t\t\t\t\t\tconst returnData = arrayOfArraysToJson(sheetDataFromStartIndex, columns);\n\n\t\t\t\t\t\tif (Array.isArray(returnData) && returnData.length !== 0) {\n\t\t\t\t\t\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(sheetData) && this.getMode() !== 'manual') {\n\t\t\t\t\tif (workflowStaticData.lastIndexChecked === undefined) {\n\t\t\t\t\t\tworkflowStaticData.lastIndexChecked = sheetData.length;\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst rowsStartIndex = Math.max(\n\t\t\t\t\t\tworkflowStaticData.lastIndexChecked as number,\n\t\t\t\t\t\tdataStartIndex,\n\t\t\t\t\t);\n\t\t\t\t\tconst addedRows = sheetData?.slice(rowsStartIndex) || [];\n\t\t\t\t\tconst returnData = arrayOfArraysToJson(addedRows, columns);\n\n\t\t\t\t\tworkflowStaticData.lastIndexChecked = sheetData.length;\n\n\t\t\t\t\tif (Array.isArray(returnData) && returnData.length !== 0) {\n\t\t\t\t\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (event === 'anyUpdate' || event === 'rowUpdate') {\n\t\t\t\tif (sheetName.length > 31) {\n\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t'Sheet name is too long choose a name with 31 characters or less',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst sheetRange = `${sheetName}!${range}`;\n\n\t\t\t\tlet dataStartIndex = startIndex - 1;\n\t\t\t\tif (rangeDefinition !== 'specifyRangeA1') {\n\t\t\t\t\tdataStartIndex = keyRow < startIndex ? startIndex - 2 : startIndex - 1;\n\t\t\t\t}\n\n\t\t\t\tconst currentData =\n\t\t\t\t\t((await googleSheet.getData(\n\t\t\t\t\t\tsheetRange,\n\t\t\t\t\t\t'UNFORMATTED_VALUE',\n\t\t\t\t\t\t'SERIAL_NUMBER',\n\t\t\t\t\t)) as string[][]) || [];\n\n\t\t\t\tif (previousRevision === undefined) {\n\t\t\t\t\tif (currentData.length === 0) {\n\t\t\t\t\t\treturn [[]];\n\t\t\t\t\t}\n\t\t\t\t\tconst zeroBasedKeyRow = keyRow - 1;\n\t\t\t\t\tconst columns = currentData[zeroBasedKeyRow];\n\t\t\t\t\tcurrentData.splice(zeroBasedKeyRow, 1); // Remove key row\n\n\t\t\t\t\tlet returnData;\n\t\t\t\t\tif (rangeDefinition !== 'specifyRangeA1') {\n\t\t\t\t\t\treturnData = arrayOfArraysToJson(currentData.slice(dataStartIndex), columns);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturnData = arrayOfArraysToJson(currentData, columns);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Array.isArray(returnData) && returnData.length !== 0 && this.getMode() === 'manual') {\n\t\t\t\t\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst previousRevisionBinaryData = await getRevisionFile.call(this, previousRevisionLink);\n\n\t\t\t\tconst previousRevisionSheetData =\n\t\t\t\t\tsheetBinaryToArrayOfArrays(\n\t\t\t\t\t\tpreviousRevisionBinaryData,\n\t\t\t\t\t\tsheetName,\n\t\t\t\t\t\trangeDefinition === 'specifyRangeA1' ? range : undefined,\n\t\t\t\t\t) || [];\n\n\t\t\t\tconst includeInOutput = this.getNodeParameter('includeInOutput', 'new') as string;\n\n\t\t\t\tlet returnData;\n\t\t\t\tif (options.columnsToWatch) {\n\t\t\t\t\treturnData = compareRevisions(\n\t\t\t\t\t\tpreviousRevisionSheetData,\n\t\t\t\t\t\tcurrentData,\n\t\t\t\t\t\tkeyRow,\n\t\t\t\t\t\tincludeInOutput,\n\t\t\t\t\t\toptions.columnsToWatch as string[],\n\t\t\t\t\t\tdataStartIndex,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturnData = compareRevisions(\n\t\t\t\t\t\tpreviousRevisionSheetData,\n\t\t\t\t\t\tcurrentData,\n\t\t\t\t\t\tkeyRow,\n\t\t\t\t\t\tincludeInOutput,\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tdataStartIndex,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(returnData) && returnData.length !== 0) {\n\t\t\t\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror?.description\n\t\t\t\t\t?.toLowerCase()\n\t\t\t\t\t.includes('user does not have sufficient permissions for file')\n\t\t\t) {\n\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\"Edit access to the document is required for the 'Row Update' and 'Row Added or Updated' triggers. Request edit access to the document's owner or select the 'Row Added' trigger in the 'Trigger On' dropdown.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\terror?.error?.error?.message !== undefined &&\n\t\t\t\t!(error.error.error.message as string).toLocaleLowerCase().includes('unknown error') &&\n\t\t\t\t!(error.error.error.message as string).toLocaleLowerCase().includes('bad request')\n\t\t\t) {\n\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\tlet [message, ...description] = (error.error.error.message as string).split('. ');\n\t\t\t\tif (message.toLowerCase() === 'access not configured') {\n\t\t\t\t\tmessage = 'Missing Google Drive API';\n\t\t\t\t}\n\t\t\t\tthrow new NodeOperationError(this.getNode(), message, {\n\t\t\t\t\tdescription: description.join('.\\n '),\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\treturn null;\n\t}\n}\n"],"mappings":"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","names":["returnData"]}
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/Google/Sheet/GoogleSheetsTrigger.node.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tINodeExecutionData,\n\tINodeType,\n\tINodeTypeDescription,\n\tINodeProperties,\n\tIPollFunctions,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nimport {\n\tarrayOfArraysToJson,\n\tBINARY_MIME_TYPE,\n\tcompareRevisions,\n\tgetRevisionFile,\n\tsheetBinaryToArrayOfArrays,\n} from './GoogleSheetsTrigger.utils';\nimport { GoogleSheet } from './v2/helpers/GoogleSheet';\nimport type { ResourceLocator, ValueRenderOption } from './v2/helpers/GoogleSheets.types';\nimport { sheetsSearch, spreadSheetsSearch } from './v2/methods/listSearch';\nimport { getSheetHeaderRowAndSkipEmpty } from './v2/methods/loadOptions';\nimport { apiRequest } from './v2/transport';\nimport { GOOGLE_DRIVE_FILE_URL_REGEX, GOOGLE_SHEETS_SHEET_URL_REGEX } from '../constants';\n\nexport const document: INodeProperties = {\n\tdisplayName: 'Document',\n\tname: 'documentId',\n\ttype: 'resourceLocator',\n\tdefault: { mode: 'list', value: '' },\n\trequired: true,\n\tmodes: [\n\t\t{\n\t\t\tdisplayName: 'From List',\n\t\t\tname: 'list',\n\t\t\ttype: 'list',\n\t\t\ttypeOptions: {\n\t\t\t\tsearchListMethod: 'spreadSheetsSearch',\n\t\t\t\tsearchable: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'By URL',\n\t\t\tname: 'url',\n\t\t\ttype: 'string',\n\t\t\textractValue: {\n\t\t\t\ttype: 'regex',\n\t\t\t\tregex: GOOGLE_DRIVE_FILE_URL_REGEX,\n\t\t\t},\n\t\t\tvalidation: [\n\t\t\t\t{\n\t\t\t\t\ttype: 'regex',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tregex: GOOGLE_DRIVE_FILE_URL_REGEX,\n\t\t\t\t\t\terrorMessage: 'Not a valid Google Drive File URL',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'By ID',\n\t\t\tname: 'id',\n\t\t\ttype: 'string',\n\t\t\tvalidation: [\n\t\t\t\t{\n\t\t\t\t\ttype: 'regex',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tregex: '[a-zA-Z0-9\\\\-_]{2,}',\n\t\t\t\t\t\terrorMessage: 'Not a valid Google Drive File ID',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\turl: '=https://docs.google.com/spreadsheets/d/{{$value}}/edit',\n\t\t},\n\t],\n};\n\nexport const sheet: INodeProperties = {\n\tdisplayName: 'Sheet',\n\tname: 'sheetName',\n\ttype: 'resourceLocator',\n\tdefault: { mode: 'list', value: '' },\n\t// default: '', //empty string set to progresivly reveal fields\n\trequired: true,\n\ttypeOptions: {\n\t\tloadOptionsDependsOn: ['documentId.value'],\n\t},\n\tmodes: [\n\t\t{\n\t\t\tdisplayName: 'From List',\n\t\t\tname: 'list',\n\t\t\ttype: 'list',\n\t\t\ttypeOptions: {\n\t\t\t\tsearchListMethod: 'sheetsSearch',\n\t\t\t\tsearchable: false,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'By URL',\n\t\t\tname: 'url',\n\t\t\ttype: 'string',\n\t\t\textractValue: {\n\t\t\t\ttype: 'regex',\n\t\t\t\tregex: GOOGLE_SHEETS_SHEET_URL_REGEX,\n\t\t\t},\n\t\t\tvalidation: [\n\t\t\t\t{\n\t\t\t\t\ttype: 'regex',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tregex: GOOGLE_SHEETS_SHEET_URL_REGEX,\n\t\t\t\t\t\terrorMessage: 'Not a valid Sheet URL',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'By ID',\n\t\t\tname: 'id',\n\t\t\ttype: 'string',\n\t\t\tvalidation: [\n\t\t\t\t{\n\t\t\t\t\ttype: 'regex',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tregex: '((gid=)?[0-9]{1,})',\n\t\t\t\t\t\terrorMessage: 'Not a valid Sheet ID',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n};\n\nexport class GoogleSheetsTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Google Sheets Trigger',\n\t\tname: 'googleSheetsTrigger',\n\t\ticon: 'file:googleSheets.svg',\n\t\tgroup: ['trigger'],\n\t\tversion: 1,\n\t\tsubtitle: '={{($parameter[\"event\"])}}',\n\t\tdescription: 'Starts the workflow when Google Sheets events occur',\n\t\tdefaults: {\n\t\t\tname: 'Google Sheets Trigger',\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'googleSheetsTriggerOAuth2Api',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tauthentication: ['triggerOAuth2'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tpolling: true,\n\t\tproperties: [\n\t\t\t// trigger shared logic with GoogleSheets node, leaving this here for compatibility\n\t\t\t{\n\t\t\t\tdisplayName: 'Authentication',\n\t\t\t\tname: 'authentication',\n\t\t\t\ttype: 'hidden',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased\n\t\t\t\t\t\tname: 'OAuth2 (recommended)',\n\t\t\t\t\t\tvalue: 'triggerOAuth2',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'triggerOAuth2',\n\t\t\t},\n\t\t\tdocument,\n\t\t\tsheet,\n\t\t\t{\n\t\t\t\tdisplayName: 'Trigger On',\n\t\t\t\tname: 'event',\n\t\t\t\ttype: 'options',\n\t\t\t\tdescription:\n\t\t\t\t\t\"It will be triggered also by newly created columns (if the 'Columns to Watch' option is not set)\",\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Row Added',\n\t\t\t\t\t\tvalue: 'rowAdded',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Row Updated',\n\t\t\t\t\t\tvalue: 'rowUpdate',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Row Added or Updated',\n\t\t\t\t\t\tvalue: 'anyUpdate',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'anyUpdate',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Include in Output',\n\t\t\t\tname: 'includeInOutput',\n\t\t\t\ttype: 'options',\n\t\t\t\tdefault: 'new',\n\t\t\t\tdescription: 'This option will be effective only when automatically executing the workflow',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'New Version',\n\t\t\t\t\t\tvalue: 'new',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Old Version',\n\t\t\t\t\t\tvalue: 'old',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Both Versions',\n\t\t\t\t\t\tvalue: 'both',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\thide: {\n\t\t\t\t\t\tevent: ['rowAdded'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add option',\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Columns to Watch',\n\t\t\t\t\t\tname: 'columnsToWatch',\n\t\t\t\t\t\ttype: 'multiOptions',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tloadOptionsDependsOn: ['sheetName.value'],\n\t\t\t\t\t\t\tloadOptionsMethod: 'getSheetHeaderRowAndSkipEmpty',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t'/event': ['anyUpdate', 'rowUpdate'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Data Location on Sheet',\n\t\t\t\t\t\tname: 'dataLocationOnSheet',\n\t\t\t\t\t\ttype: 'fixedCollection',\n\t\t\t\t\t\tplaceholder: 'Select Range',\n\t\t\t\t\t\tdefault: { values: { rangeDefinition: 'specifyRangeA1' } },\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Values',\n\t\t\t\t\t\t\t\tname: 'values',\n\t\t\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdisplayName: 'Range Definition',\n\t\t\t\t\t\t\t\t\t\tname: 'rangeDefinition',\n\t\t\t\t\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'Specify Range (A1 Notation)',\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: 'specifyRangeA1',\n\t\t\t\t\t\t\t\t\t\t\t\tdescription: 'Manually specify the data range',\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'Specify Range (Rows)',\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: 'specifyRange',\n\t\t\t\t\t\t\t\t\t\t\t\tdescription: 'Manually specify the data range',\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdisplayName: 'Header Row',\n\t\t\t\t\t\t\t\t\t\tname: 'headerRow',\n\t\t\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\t\t\t\t\tminValue: 1,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tdefault: 1,\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t'Index of the row which contains the keys. Starts at 1. The incoming node data is matched to the keys for assignment. The matching is case sensitive.',\n\t\t\t\t\t\t\t\t\t\thint: 'First row is row 1',\n\t\t\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\t\t\trangeDefinition: ['specifyRange'],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdisplayName: 'First Data Row',\n\t\t\t\t\t\t\t\t\t\tname: 'firstDataRow',\n\t\t\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\t\t\t\t\tminValue: 1,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tdefault: 2,\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t'Index of the first row which contains the actual data and not the keys. Starts with 1.',\n\t\t\t\t\t\t\t\t\t\thint: 'First row is row 1',\n\t\t\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\t\t\trangeDefinition: ['specifyRange'],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdisplayName: 'Range',\n\t\t\t\t\t\t\t\t\t\tname: 'range',\n\t\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\t\t\tplaceholder: 'A:Z',\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t'The table range to read from or to append data to. See the Google <a href=\"https://developers.google.com/sheets/api/guides/values#writing\">documentation</a> for the details.',\n\t\t\t\t\t\t\t\t\t\thint: 'You can specify both the rows and the columns, e.g. C4:E7',\n\t\t\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\t\t\trangeDefinition: ['specifyRangeA1'],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Value Render',\n\t\t\t\t\t\tname: 'valueRender',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Unformatted',\n\t\t\t\t\t\t\t\tvalue: 'UNFORMATTED_VALUE',\n\t\t\t\t\t\t\t\tdescription: 'Values will be calculated, but not formatted in the reply',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Formatted',\n\t\t\t\t\t\t\t\tvalue: 'FORMATTED_VALUE',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Values will be formatted and calculated according to the cell's formatting (based on the spreadsheet's locale)\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Formula',\n\t\t\t\t\t\t\t\tvalue: 'FORMULA',\n\t\t\t\t\t\t\t\tdescription: 'Values will not be calculated. The reply will include the formulas.',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: 'UNFORMATTED_VALUE',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Determines how values will be rendered in the output. <a href=\"https://developers.google.com/sheets/api/reference/rest/v4/ValueRenderOption\" target=\"_blank\">More info</a>.',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\thide: {\n\t\t\t\t\t\t\t\t'/event': ['anyUpdate', 'rowUpdate'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'DateTime Render',\n\t\t\t\t\t\tname: 'dateTimeRenderOption',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Serial Number',\n\t\t\t\t\t\t\t\tvalue: 'SERIAL_NUMBER',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t'Fields will be returned as doubles in \"serial number\" format (as popularized by Lotus 1-2-3)',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Formatted String',\n\t\t\t\t\t\t\t\tvalue: 'FORMATTED_STRING',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t'Fields will be rendered as strings in their given number format (which depends on the spreadsheet locale)',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: 'SERIAL_NUMBER',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Determines how dates should be rendered in the output. <a href=\"https://developers.google.com/sheets/api/reference/rest/v4/DateTimeRenderOption\" target=\"_blank\">More info</a>.',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\thide: {\n\t\t\t\t\t\t\t\t'/event': ['anyUpdate', 'rowUpdate'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tmethods = {\n\t\tlistSearch: { spreadSheetsSearch, sheetsSearch },\n\t\tloadOptions: { getSheetHeaderRowAndSkipEmpty },\n\t};\n\n\tasync poll(this: IPollFunctions): Promise<INodeExecutionData[][] | null> {\n\t\ttry {\n\t\t\tconst workflowStaticData = this.getWorkflowStaticData('node');\n\t\t\tconst event = this.getNodeParameter('event', 0) as string;\n\n\t\t\tconst documentId = this.getNodeParameter('documentId', undefined, {\n\t\t\t\textractValue: true,\n\t\t\t}) as string;\n\n\t\t\tconst sheetWithinDocument = this.getNodeParameter('sheetName', undefined, {\n\t\t\t\textractValue: true,\n\t\t\t}) as string;\n\t\t\tconst { mode: sheetMode } = this.getNodeParameter('sheetName', 0) as {\n\t\t\t\tmode: ResourceLocator;\n\t\t\t};\n\n\t\t\tconst googleSheet = new GoogleSheet(documentId, this);\n\t\t\tconst { sheetId, title: sheetName } = await googleSheet.spreadsheetGetSheet(\n\t\t\t\tthis.getNode(),\n\t\t\t\tsheetMode,\n\t\t\t\tsheetWithinDocument,\n\t\t\t);\n\n\t\t\tconst options = this.getNodeParameter('options') as IDataObject;\n\n\t\t\t// If the documentId or sheetId changed, reset the workflow static data\n\t\t\tif (\n\t\t\t\tthis.getMode() !== 'manual' &&\n\t\t\t\t(workflowStaticData.documentId !== documentId || workflowStaticData.sheetId !== sheetId)\n\t\t\t) {\n\t\t\t\tworkflowStaticData.documentId = documentId;\n\t\t\t\tworkflowStaticData.sheetId = sheetId;\n\t\t\t\tworkflowStaticData.lastRevision = undefined;\n\t\t\t\tworkflowStaticData.lastRevisionLink = undefined;\n\t\t\t\tworkflowStaticData.lastIndexChecked = undefined;\n\t\t\t}\n\n\t\t\tconst previousRevision = workflowStaticData.lastRevision as number;\n\t\t\tconst previousRevisionLink = workflowStaticData.lastRevisionLink as string;\n\n\t\t\tif (event !== 'rowAdded') {\n\t\t\t\tlet pageToken;\n\t\t\t\tdo {\n\t\t\t\t\tconst { revisions, nextPageToken } = await apiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfields: 'revisions(id, exportLinks), nextPageToken',\n\t\t\t\t\t\t\tpageToken,\n\t\t\t\t\t\t\tpageSize: 1000,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t`https://www.googleapis.com/drive/v3/files/${documentId}/revisions`,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (nextPageToken) {\n\t\t\t\t\t\tpageToken = nextPageToken as string;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpageToken = undefined;\n\n\t\t\t\t\t\tconst lastRevision = +revisions[revisions.length - 1].id;\n\t\t\t\t\t\tif (lastRevision <= previousRevision) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (this.getMode() !== 'manual') {\n\t\t\t\t\t\t\t\tworkflowStaticData.lastRevision = lastRevision;\n\t\t\t\t\t\t\t\tworkflowStaticData.lastRevisionLink =\n\t\t\t\t\t\t\t\t\trevisions[revisions.length - 1].exportLinks[BINARY_MIME_TYPE];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} while (pageToken);\n\t\t\t}\n\n\t\t\tlet range = 'A:ZZZ';\n\t\t\tlet keyRow = 1;\n\t\t\tlet startIndex = 2;\n\n\t\t\tlet rangeDefinition = '';\n\n\t\t\tconst [from, to] = range.split(':');\n\t\t\tlet keyRange = `${from}${keyRow}:${to}${keyRow}`;\n\t\t\tlet rangeToCheck = `${from}${keyRow}:${to}`;\n\n\t\t\tif (options.dataLocationOnSheet) {\n\t\t\t\tconst locationDefine = (options.dataLocationOnSheet as IDataObject).values as IDataObject;\n\t\t\t\trangeDefinition = locationDefine.rangeDefinition as string;\n\n\t\t\t\tif (rangeDefinition === 'specifyRangeA1') {\n\t\t\t\t\tif (locationDefine.range === '') {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t\"The field 'Range' is empty, please provide a range\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trange = locationDefine.range as string;\n\t\t\t\t}\n\n\t\t\t\tif (rangeDefinition === 'specifyRange') {\n\t\t\t\t\tkeyRow = parseInt(locationDefine.headerRow as string, 10);\n\t\t\t\t\tstartIndex = parseInt(locationDefine.firstDataRow as string, 10);\n\t\t\t\t}\n\n\t\t\t\tconst [rangeFrom, rangeTo] = range.split(':');\n\t\t\t\tconst cellDataFrom = rangeFrom.match(/([a-zA-Z]{1,10})([0-9]{0,10})/) || [];\n\t\t\t\tconst cellDataTo = rangeTo.match(/([a-zA-Z]{1,10})([0-9]{0,10})/) || [];\n\n\t\t\t\tif (rangeDefinition === 'specifyRangeA1' && cellDataFrom[2] !== undefined) {\n\t\t\t\t\tkeyRange = `${cellDataFrom[1]}${+cellDataFrom[2]}:${cellDataTo[1]}${+cellDataFrom[2]}`;\n\t\t\t\t\trangeToCheck = `${cellDataFrom[1]}${+cellDataFrom[2] + 1}:${rangeTo}`;\n\t\t\t\t} else {\n\t\t\t\t\tkeyRange = `${cellDataFrom[1]}${keyRow}:${cellDataTo[1]}${keyRow}`;\n\t\t\t\t\trangeToCheck = `${cellDataFrom[1]}${keyRow}:${rangeTo}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst qs: IDataObject = {};\n\n\t\t\tObject.assign(qs, options);\n\n\t\t\tif (event === 'rowAdded') {\n\t\t\t\tconst [columns] = ((\n\t\t\t\t\t(await apiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t`/v4/spreadsheets/${documentId}/values/${encodeURIComponent(sheetName)}!${keyRange}`,\n\t\t\t\t\t)) as IDataObject\n\t\t\t\t).values as string[][]) || [[]];\n\n\t\t\t\tif (!columns?.length) {\n\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t'Could not retrieve the columns from key row',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst sheetData = await googleSheet.getData(\n\t\t\t\t\t`${sheetName}!${rangeToCheck}`,\n\t\t\t\t\t(options.valueRender as ValueRenderOption) || 'UNFORMATTED_VALUE',\n\t\t\t\t\t(options.dateTimeRenderOption as string) || 'FORMATTED_STRING',\n\t\t\t\t);\n\n\t\t\t\tif (Array.isArray(sheetData) && sheetData.length !== 0) {\n\t\t\t\t\tsheetData.splice(0, 1); // Remove header row\n\t\t\t\t}\n\n\t\t\t\tlet dataStartIndex = 0;\n\t\t\t\tif (rangeDefinition === 'specifyRange' && keyRow < startIndex) {\n\t\t\t\t\tdataStartIndex = startIndex - keyRow - 1;\n\t\t\t\t}\n\n\t\t\t\tif (this.getMode() === 'manual') {\n\t\t\t\t\tif (Array.isArray(sheetData)) {\n\t\t\t\t\t\tconst sheetDataFromStartIndex = sheetData.slice(dataStartIndex);\n\t\t\t\t\t\tconst returnData = arrayOfArraysToJson(sheetDataFromStartIndex, columns);\n\n\t\t\t\t\t\tif (Array.isArray(returnData) && returnData.length !== 0) {\n\t\t\t\t\t\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(sheetData) && this.getMode() !== 'manual') {\n\t\t\t\t\tif (workflowStaticData.lastIndexChecked === undefined) {\n\t\t\t\t\t\tworkflowStaticData.lastIndexChecked = sheetData.length;\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst rowsStartIndex = Math.max(\n\t\t\t\t\t\tworkflowStaticData.lastIndexChecked as number,\n\t\t\t\t\t\tdataStartIndex,\n\t\t\t\t\t);\n\t\t\t\t\tconst addedRows = sheetData?.slice(rowsStartIndex) || [];\n\t\t\t\t\tconst returnData = arrayOfArraysToJson(addedRows, columns);\n\n\t\t\t\t\tworkflowStaticData.lastIndexChecked = sheetData.length;\n\n\t\t\t\t\tif (Array.isArray(returnData) && returnData.length !== 0) {\n\t\t\t\t\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (event === 'anyUpdate' || event === 'rowUpdate') {\n\t\t\t\tif (sheetName.length > 31) {\n\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t'Sheet name is too long choose a name with 31 characters or less',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst sheetRange = `${sheetName}!${range}`;\n\n\t\t\t\tlet dataStartIndex = startIndex - 1;\n\t\t\t\tif (rangeDefinition !== 'specifyRangeA1') {\n\t\t\t\t\tdataStartIndex = keyRow < startIndex ? startIndex - 2 : startIndex - 1;\n\t\t\t\t}\n\n\t\t\t\tconst currentData =\n\t\t\t\t\t((await googleSheet.getData(\n\t\t\t\t\t\tsheetRange,\n\t\t\t\t\t\t'UNFORMATTED_VALUE',\n\t\t\t\t\t\t'SERIAL_NUMBER',\n\t\t\t\t\t)) as string[][]) || [];\n\n\t\t\t\tif (previousRevision === undefined) {\n\t\t\t\t\tif (currentData.length === 0) {\n\t\t\t\t\t\treturn [[]];\n\t\t\t\t\t}\n\t\t\t\t\tconst zeroBasedKeyRow = keyRow - 1;\n\t\t\t\t\tconst columns = currentData[zeroBasedKeyRow];\n\t\t\t\t\tcurrentData.splice(zeroBasedKeyRow, 1); // Remove key row\n\n\t\t\t\t\tlet returnData;\n\t\t\t\t\tif (rangeDefinition !== 'specifyRangeA1') {\n\t\t\t\t\t\treturnData = arrayOfArraysToJson(currentData.slice(dataStartIndex), columns);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturnData = arrayOfArraysToJson(currentData, columns);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Array.isArray(returnData) && returnData.length !== 0 && this.getMode() === 'manual') {\n\t\t\t\t\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst previousRevisionBinaryData = await getRevisionFile.call(this, previousRevisionLink);\n\n\t\t\t\tconst previousRevisionSheetData =\n\t\t\t\t\tsheetBinaryToArrayOfArrays(\n\t\t\t\t\t\tpreviousRevisionBinaryData,\n\t\t\t\t\t\tsheetName,\n\t\t\t\t\t\trangeDefinition === 'specifyRangeA1' ? range : undefined,\n\t\t\t\t\t) || [];\n\n\t\t\t\tconst includeInOutput = this.getNodeParameter('includeInOutput', 'new') as string;\n\n\t\t\t\tlet returnData;\n\t\t\t\tif (options.columnsToWatch) {\n\t\t\t\t\treturnData = compareRevisions(\n\t\t\t\t\t\tpreviousRevisionSheetData,\n\t\t\t\t\t\tcurrentData,\n\t\t\t\t\t\tkeyRow,\n\t\t\t\t\t\tincludeInOutput,\n\t\t\t\t\t\toptions.columnsToWatch as string[],\n\t\t\t\t\t\tdataStartIndex,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturnData = compareRevisions(\n\t\t\t\t\t\tpreviousRevisionSheetData,\n\t\t\t\t\t\tcurrentData,\n\t\t\t\t\t\tkeyRow,\n\t\t\t\t\t\tincludeInOutput,\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tdataStartIndex,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(returnData) && returnData.length !== 0) {\n\t\t\t\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror?.description\n\t\t\t\t\t?.toLowerCase()\n\t\t\t\t\t.includes('user does not have sufficient permissions for file')\n\t\t\t) {\n\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\"Edit access to the document is required for the 'Row Update' and 'Row Added or Updated' triggers. Request edit access to the document's owner or select the 'Row Added' trigger in the 'Trigger On' dropdown.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\terror?.error?.error?.message !== undefined &&\n\t\t\t\t!(error.error.error.message as string).toLocaleLowerCase().includes('unknown error') &&\n\t\t\t\t!(error.error.error.message as string).toLocaleLowerCase().includes('bad request')\n\t\t\t) {\n\t\t\t\t// eslint-disable-next-line prefer-const\n\t\t\t\tlet [message, ...description] = (error.error.error.message as string).split('. ');\n\t\t\t\tif (message.toLowerCase() === 'access not configured') {\n\t\t\t\t\tmessage = 'Missing Google Drive API';\n\t\t\t\t}\n\t\t\t\tthrow new NodeOperationError(this.getNode(), message, {\n\t\t\t\t\tdescription: description.join('.\\n '),\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\treturn null;\n\t}\n}\n"],"mappings":"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","names":["returnData"]}
|
|
@@ -19,11 +19,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var read_operation_exports = {};
|
|
20
20
|
__export(read_operation_exports, {
|
|
21
21
|
description: () => description,
|
|
22
|
-
execute: () => execute
|
|
22
|
+
execute: () => execute,
|
|
23
|
+
readFilter: () => readFilter
|
|
23
24
|
});
|
|
24
25
|
module.exports = __toCommonJS(read_operation_exports);
|
|
25
26
|
var import_commonDescription = require("./commonDescription");
|
|
26
27
|
var import_GoogleSheets = require("../../helpers/GoogleSheets.utils");
|
|
28
|
+
var import_readOperation = require("../utils/readOperation");
|
|
27
29
|
const combineFiltersOptions = {
|
|
28
30
|
displayName: "Combine Filters",
|
|
29
31
|
name: "combineFilters",
|
|
@@ -43,44 +45,47 @@ const combineFiltersOptions = {
|
|
|
43
45
|
],
|
|
44
46
|
default: "AND"
|
|
45
47
|
};
|
|
48
|
+
const readFilter = {
|
|
49
|
+
displayName: "Filters",
|
|
50
|
+
name: "filtersUI",
|
|
51
|
+
placeholder: "Add Filter",
|
|
52
|
+
type: "fixedCollection",
|
|
53
|
+
typeOptions: {
|
|
54
|
+
multipleValueButtonText: "Add Filter",
|
|
55
|
+
multipleValues: true
|
|
56
|
+
},
|
|
57
|
+
default: {},
|
|
58
|
+
options: [
|
|
59
|
+
{
|
|
60
|
+
displayName: "Filter",
|
|
61
|
+
name: "values",
|
|
62
|
+
values: [
|
|
63
|
+
{
|
|
64
|
+
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options
|
|
65
|
+
displayName: "Column",
|
|
66
|
+
name: "lookupColumn",
|
|
67
|
+
type: "options",
|
|
68
|
+
typeOptions: {
|
|
69
|
+
loadOptionsDependsOn: ["sheetName.value"],
|
|
70
|
+
loadOptionsMethod: "getSheetHeaderRowWithGeneratedColumnNames"
|
|
71
|
+
},
|
|
72
|
+
default: "",
|
|
73
|
+
description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>'
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
displayName: "Value",
|
|
77
|
+
name: "lookupValue",
|
|
78
|
+
type: "string",
|
|
79
|
+
default: "",
|
|
80
|
+
hint: "The column must have this value to be matched"
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
};
|
|
46
86
|
const description = [
|
|
47
87
|
{
|
|
48
|
-
|
|
49
|
-
name: "filtersUI",
|
|
50
|
-
placeholder: "Add Filter",
|
|
51
|
-
type: "fixedCollection",
|
|
52
|
-
typeOptions: {
|
|
53
|
-
multipleValueButtonText: "Add Filter",
|
|
54
|
-
multipleValues: true
|
|
55
|
-
},
|
|
56
|
-
default: {},
|
|
57
|
-
options: [
|
|
58
|
-
{
|
|
59
|
-
displayName: "Filter",
|
|
60
|
-
name: "values",
|
|
61
|
-
values: [
|
|
62
|
-
{
|
|
63
|
-
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options
|
|
64
|
-
displayName: "Column",
|
|
65
|
-
name: "lookupColumn",
|
|
66
|
-
type: "options",
|
|
67
|
-
typeOptions: {
|
|
68
|
-
loadOptionsDependsOn: ["sheetName.value"],
|
|
69
|
-
loadOptionsMethod: "getSheetHeaderRowWithGeneratedColumnNames"
|
|
70
|
-
},
|
|
71
|
-
default: "",
|
|
72
|
-
description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>'
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
displayName: "Value",
|
|
76
|
-
name: "lookupValue",
|
|
77
|
-
type: "string",
|
|
78
|
-
default: "",
|
|
79
|
-
hint: "The column must have this value to be matched"
|
|
80
|
-
}
|
|
81
|
-
]
|
|
82
|
-
}
|
|
83
|
-
],
|
|
88
|
+
...readFilter,
|
|
84
89
|
displayOptions: {
|
|
85
90
|
show: {
|
|
86
91
|
resource: ["sheet"],
|
|
@@ -182,76 +187,16 @@ async function execute(sheet, sheetName) {
|
|
|
182
187
|
if (nodeVersion > 4.1) {
|
|
183
188
|
length = items.length;
|
|
184
189
|
}
|
|
185
|
-
|
|
190
|
+
let returnData = [];
|
|
186
191
|
for (let itemIndex = 0; itemIndex < length; itemIndex++) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
dataLocationOnSheetOptions.rangeDefinition = "detectAutomatically";
|
|
192
|
-
}
|
|
193
|
-
const range = (0, import_GoogleSheets.getRangeString)(sheetName, dataLocationOnSheetOptions);
|
|
194
|
-
const valueRenderMode = outputFormattingOption.general || "UNFORMATTED_VALUE";
|
|
195
|
-
const dateTimeRenderOption = outputFormattingOption.date || "FORMATTED_STRING";
|
|
196
|
-
const sheetData = await sheet.getData(
|
|
197
|
-
range,
|
|
198
|
-
valueRenderMode,
|
|
199
|
-
dateTimeRenderOption
|
|
200
|
-
);
|
|
201
|
-
if (sheetData === void 0 || sheetData.length === 0) {
|
|
202
|
-
return [];
|
|
203
|
-
}
|
|
204
|
-
const {
|
|
205
|
-
data,
|
|
206
|
-
headerRow: keyRowIndex,
|
|
207
|
-
firstDataRow: dataStartRowIndex
|
|
208
|
-
} = (0, import_GoogleSheets.prepareSheetData)(sheetData, dataLocationOnSheetOptions);
|
|
209
|
-
let responseData = [];
|
|
210
|
-
const lookupValues = this.getNodeParameter(
|
|
211
|
-
"filtersUI.values",
|
|
192
|
+
returnData = await import_readOperation.readSheet.call(
|
|
193
|
+
this,
|
|
194
|
+
sheet,
|
|
195
|
+
sheetName,
|
|
212
196
|
itemIndex,
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
if (lookupValues.length) {
|
|
217
|
-
let returnAllMatches;
|
|
218
|
-
if (nodeVersion < 4.5) {
|
|
219
|
-
returnAllMatches = options.returnAllMatches === "returnAllMatches" ? true : false;
|
|
220
|
-
} else {
|
|
221
|
-
returnAllMatches = options.returnFirstMatch ? false : true;
|
|
222
|
-
}
|
|
223
|
-
if (nodeVersion <= 4.1) {
|
|
224
|
-
for (let i = 1; i < items.length; i++) {
|
|
225
|
-
const itemLookupValues = this.getNodeParameter(
|
|
226
|
-
"filtersUI.values",
|
|
227
|
-
i,
|
|
228
|
-
[]
|
|
229
|
-
);
|
|
230
|
-
if (itemLookupValues.length) {
|
|
231
|
-
lookupValues.push(...itemLookupValues);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
const combineFilters = this.getNodeParameter("combineFilters", itemIndex, "OR");
|
|
236
|
-
responseData = await sheet.lookupValues({
|
|
237
|
-
inputData,
|
|
238
|
-
keyRowIndex,
|
|
239
|
-
dataStartRowIndex,
|
|
240
|
-
lookupValues,
|
|
241
|
-
returnAllMatches,
|
|
242
|
-
combineFilters,
|
|
243
|
-
nodeVersion
|
|
244
|
-
});
|
|
245
|
-
} else {
|
|
246
|
-
responseData = sheet.structureArrayDataByColumn(inputData, keyRowIndex, dataStartRowIndex);
|
|
247
|
-
}
|
|
248
|
-
returnData.push(
|
|
249
|
-
...responseData.map((item) => {
|
|
250
|
-
return {
|
|
251
|
-
json: item,
|
|
252
|
-
pairedItem: { item: itemIndex }
|
|
253
|
-
};
|
|
254
|
-
})
|
|
197
|
+
returnData,
|
|
198
|
+
nodeVersion,
|
|
199
|
+
items
|
|
255
200
|
);
|
|
256
201
|
}
|
|
257
202
|
return returnData;
|
|
@@ -259,6 +204,7 @@ async function execute(sheet, sheetName) {
|
|
|
259
204
|
// Annotate the CommonJS export names for ESM import in node:
|
|
260
205
|
0 && (module.exports = {
|
|
261
206
|
description,
|
|
262
|
-
execute
|
|
207
|
+
execute,
|
|
208
|
+
readFilter
|
|
263
209
|
});
|
|
264
210
|
//# sourceMappingURL=read.operation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../nodes/Google/Sheet/v2/actions/sheet/read.operation.ts"],"sourcesContent":["import type {\n\tIExecuteFunctions,\n\tIDataObject,\n\tINodeExecutionData,\n\tINodeProperties,\n} from 'n8n-workflow';\n\nimport { dataLocationOnSheet, outputFormatting } from './commonDescription';\nimport type { GoogleSheet } from '../../helpers/GoogleSheet';\nimport type {\n\tILookupValues,\n\tRangeDetectionOptions,\n\tSheetProperties,\n\tSheetRangeData,\n\tValueRenderOption,\n} from '../../helpers/GoogleSheets.types';\nimport {\n\tgetRangeString,\n\tprepareSheetData,\n\tuntilSheetSelected,\n} from '../../helpers/GoogleSheets.utils';\n\nconst combineFiltersOptions: INodeProperties = {\n\tdisplayName: 'Combine Filters',\n\tname: 'combineFilters',\n\ttype: 'options',\n\tdescription:\n\t\t'How to combine the conditions defined in \"Filters\": AND requires all conditions to be true, OR requires at least one condition to be true',\n\toptions: [\n\t\t{\n\t\t\tname: 'AND',\n\t\t\tvalue: 'AND',\n\t\t\tdescription: 'Only rows that meet all the conditions are selected',\n\t\t},\n\t\t{\n\t\t\tname: 'OR',\n\t\t\tvalue: 'OR',\n\t\t\tdescription: 'Rows that meet at least one condition are selected',\n\t\t},\n\t],\n\tdefault: 'AND',\n};\n\nexport const description: SheetProperties = [\n\t{\n\t\tdisplayName: 'Filters',\n\t\tname: 'filtersUI',\n\t\tplaceholder: 'Add Filter',\n\t\ttype: 'fixedCollection',\n\t\ttypeOptions: {\n\t\t\tmultipleValueButtonText: 'Add Filter',\n\t\t\tmultipleValues: true,\n\t\t},\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Filter',\n\t\t\t\tname: 'values',\n\t\t\t\tvalues: [\n\t\t\t\t\t{\n\t\t\t\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options\n\t\t\t\t\t\tdisplayName: 'Column',\n\t\t\t\t\t\tname: 'lookupColumn',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tloadOptionsDependsOn: ['sheetName.value'],\n\t\t\t\t\t\t\tloadOptionsMethod: 'getSheetHeaderRowWithGeneratedColumnNames',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Value',\n\t\t\t\t\t\tname: 'lookupValue',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\thint: 'The column must have this value to be matched',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['sheet'],\n\t\t\t\toperation: ['read'],\n\t\t\t},\n\t\t\thide: {\n\t\t\t\t...untilSheetSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\t...combineFiltersOptions,\n\t\tdefault: 'OR',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\t'@version': [{ _cnd: { lt: 4.3 } }],\n\t\t\t\tresource: ['sheet'],\n\t\t\t\toperation: ['read'],\n\t\t\t},\n\t\t\thide: {\n\t\t\t\t...untilSheetSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\t...combineFiltersOptions,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\t'@version': [{ _cnd: { gte: 4.3 } }],\n\t\t\t\tresource: ['sheet'],\n\t\t\t\toperation: ['read'],\n\t\t\t},\n\t\t\thide: {\n\t\t\t\t...untilSheetSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add option',\n\t\tdefault: {},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['sheet'],\n\t\t\t\toperation: ['read'],\n\t\t\t},\n\t\t\thide: {\n\t\t\t\t...untilSheetSelected,\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\tdataLocationOnSheet,\n\t\t\toutputFormatting,\n\t\t\t{\n\t\t\t\tdisplayName: 'Return only First Matching Row',\n\t\t\t\tname: 'returnFirstMatch',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t\tdescription:\n\t\t\t\t\t'Whether to select the first row of the sheet or the first matching row (if filters are set)',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [{ _cnd: { gte: 4.5 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'When Filter Has Multiple Matches',\n\t\t\t\tname: 'returnAllMatches',\n\t\t\t\ttype: 'options',\n\t\t\t\tdefault: 'returnFirstMatch',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Return First Match',\n\t\t\t\t\t\tvalue: 'returnFirstMatch',\n\t\t\t\t\t\tdescription: 'Return only the first match',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Return All Matches',\n\t\t\t\t\t\tvalue: 'returnAllMatches',\n\t\t\t\t\t\tdescription: 'Return all values that match',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdescription:\n\t\t\t\t\t'By default only the first result gets returned, Set to \"Return All Matches\" to get multiple matches',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [{ _cnd: { lt: 4.5 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n];\n\nexport async function execute(\n\tthis: IExecuteFunctions,\n\tsheet: GoogleSheet,\n\tsheetName: string,\n): Promise<INodeExecutionData[]> {\n\tconst items = this.getInputData();\n\tconst nodeVersion = this.getNode().typeVersion;\n\tlet length = 1;\n\n\tif (nodeVersion > 4.1) {\n\t\tlength = items.length;\n\t}\n\n\tconst returnData: INodeExecutionData[] = [];\n\n\tfor (let itemIndex = 0; itemIndex < length; itemIndex++) {\n\t\tconst options = this.getNodeParameter('options', itemIndex, {});\n\t\tconst outputFormattingOption =\n\t\t\t((options.outputFormatting as IDataObject)?.values as IDataObject) || {};\n\n\t\tconst dataLocationOnSheetOptions =\n\t\t\t((options.dataLocationOnSheet as IDataObject)?.values as RangeDetectionOptions) || {};\n\n\t\tif (dataLocationOnSheetOptions.rangeDefinition === undefined) {\n\t\t\tdataLocationOnSheetOptions.rangeDefinition = 'detectAutomatically';\n\t\t}\n\n\t\tconst range = getRangeString(sheetName, dataLocationOnSheetOptions);\n\n\t\tconst valueRenderMode = (outputFormattingOption.general ||\n\t\t\t'UNFORMATTED_VALUE') as ValueRenderOption;\n\t\tconst dateTimeRenderOption = (outputFormattingOption.date || 'FORMATTED_STRING') as string;\n\n\t\tconst sheetData = (await sheet.getData(\n\t\t\trange,\n\t\t\tvalueRenderMode,\n\t\t\tdateTimeRenderOption,\n\t\t)) as SheetRangeData;\n\n\t\tif (sheetData === undefined || sheetData.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst {\n\t\t\tdata,\n\t\t\theaderRow: keyRowIndex,\n\t\t\tfirstDataRow: dataStartRowIndex,\n\t\t} = prepareSheetData(sheetData, dataLocationOnSheetOptions);\n\n\t\tlet responseData = [];\n\n\t\tconst lookupValues = this.getNodeParameter(\n\t\t\t'filtersUI.values',\n\t\t\titemIndex,\n\t\t\t[],\n\t\t) as ILookupValues[];\n\n\t\tconst inputData = data as string[][];\n\n\t\tif (lookupValues.length) {\n\t\t\tlet returnAllMatches;\n\t\t\tif (nodeVersion < 4.5) {\n\t\t\t\treturnAllMatches = options.returnAllMatches === 'returnAllMatches' ? true : false;\n\t\t\t} else {\n\t\t\t\treturnAllMatches = options.returnFirstMatch ? false : true;\n\t\t\t}\n\n\t\t\tif (nodeVersion <= 4.1) {\n\t\t\t\tfor (let i = 1; i < items.length; i++) {\n\t\t\t\t\tconst itemLookupValues = this.getNodeParameter(\n\t\t\t\t\t\t'filtersUI.values',\n\t\t\t\t\t\ti,\n\t\t\t\t\t\t[],\n\t\t\t\t\t) as ILookupValues[];\n\t\t\t\t\tif (itemLookupValues.length) {\n\t\t\t\t\t\tlookupValues.push(...itemLookupValues);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst combineFilters = this.getNodeParameter('combineFilters', itemIndex, 'OR') as\n\t\t\t\t| 'AND'\n\t\t\t\t| 'OR';\n\n\t\t\tresponseData = await sheet.lookupValues({\n\t\t\t\tinputData,\n\t\t\t\tkeyRowIndex,\n\t\t\t\tdataStartRowIndex,\n\t\t\t\tlookupValues,\n\t\t\t\treturnAllMatches,\n\t\t\t\tcombineFilters,\n\t\t\t\tnodeVersion,\n\t\t\t});\n\t\t} else {\n\t\t\tresponseData = sheet.structureArrayDataByColumn(inputData, keyRowIndex, dataStartRowIndex);\n\t\t}\n\n\t\treturnData.push(\n\t\t\t...responseData.map((item) => {\n\t\t\t\treturn {\n\t\t\t\t\tjson: item,\n\t\t\t\t\tpairedItem: { item: itemIndex },\n\t\t\t\t};\n\t\t\t}),\n\t\t);\n\t}\n\n\treturn returnData;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../nodes/Google/Sheet/v2/actions/sheet/read.operation.ts"],"sourcesContent":["import type { IExecuteFunctions, INodeExecutionData, INodeProperties } from 'n8n-workflow';\n\nimport { dataLocationOnSheet, outputFormatting } from './commonDescription';\nimport type { GoogleSheet } from '../../helpers/GoogleSheet';\nimport type { SheetProperties } from '../../helpers/GoogleSheets.types';\nimport { untilSheetSelected } from '../../helpers/GoogleSheets.utils';\nimport { readSheet } from '../utils/readOperation';\n\nconst combineFiltersOptions: INodeProperties = {\n\tdisplayName: 'Combine Filters',\n\tname: 'combineFilters',\n\ttype: 'options',\n\tdescription:\n\t\t'How to combine the conditions defined in \"Filters\": AND requires all conditions to be true, OR requires at least one condition to be true',\n\toptions: [\n\t\t{\n\t\t\tname: 'AND',\n\t\t\tvalue: 'AND',\n\t\t\tdescription: 'Only rows that meet all the conditions are selected',\n\t\t},\n\t\t{\n\t\t\tname: 'OR',\n\t\t\tvalue: 'OR',\n\t\t\tdescription: 'Rows that meet at least one condition are selected',\n\t\t},\n\t],\n\tdefault: 'AND',\n};\n\nexport const readFilter: INodeProperties = {\n\tdisplayName: 'Filters',\n\tname: 'filtersUI',\n\tplaceholder: 'Add Filter',\n\ttype: 'fixedCollection',\n\ttypeOptions: {\n\t\tmultipleValueButtonText: 'Add Filter',\n\t\tmultipleValues: true,\n\t},\n\tdefault: {},\n\toptions: [\n\t\t{\n\t\t\tdisplayName: 'Filter',\n\t\t\tname: 'values',\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options\n\t\t\t\t\tdisplayName: 'Column',\n\t\t\t\t\tname: 'lookupColumn',\n\t\t\t\t\ttype: 'options',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tloadOptionsDependsOn: ['sheetName.value'],\n\t\t\t\t\t\tloadOptionsMethod: 'getSheetHeaderRowWithGeneratedColumnNames',\n\t\t\t\t\t},\n\t\t\t\t\tdefault: '',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdisplayName: 'Value',\n\t\t\t\t\tname: 'lookupValue',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefault: '',\n\t\t\t\t\thint: 'The column must have this value to be matched',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n};\n\nexport const description: SheetProperties = [\n\t{\n\t\t...readFilter,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['sheet'],\n\t\t\t\toperation: ['read'],\n\t\t\t},\n\t\t\thide: {\n\t\t\t\t...untilSheetSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\t...combineFiltersOptions,\n\t\tdefault: 'OR',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\t'@version': [{ _cnd: { lt: 4.3 } }],\n\t\t\t\tresource: ['sheet'],\n\t\t\t\toperation: ['read'],\n\t\t\t},\n\t\t\thide: {\n\t\t\t\t...untilSheetSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\t...combineFiltersOptions,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\t'@version': [{ _cnd: { gte: 4.3 } }],\n\t\t\t\tresource: ['sheet'],\n\t\t\t\toperation: ['read'],\n\t\t\t},\n\t\t\thide: {\n\t\t\t\t...untilSheetSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add option',\n\t\tdefault: {},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['sheet'],\n\t\t\t\toperation: ['read'],\n\t\t\t},\n\t\t\thide: {\n\t\t\t\t...untilSheetSelected,\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\tdataLocationOnSheet,\n\t\t\toutputFormatting,\n\t\t\t{\n\t\t\t\tdisplayName: 'Return only First Matching Row',\n\t\t\t\tname: 'returnFirstMatch',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t\tdescription:\n\t\t\t\t\t'Whether to select the first row of the sheet or the first matching row (if filters are set)',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [{ _cnd: { gte: 4.5 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'When Filter Has Multiple Matches',\n\t\t\t\tname: 'returnAllMatches',\n\t\t\t\ttype: 'options',\n\t\t\t\tdefault: 'returnFirstMatch',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Return First Match',\n\t\t\t\t\t\tvalue: 'returnFirstMatch',\n\t\t\t\t\t\tdescription: 'Return only the first match',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Return All Matches',\n\t\t\t\t\t\tvalue: 'returnAllMatches',\n\t\t\t\t\t\tdescription: 'Return all values that match',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdescription:\n\t\t\t\t\t'By default only the first result gets returned, Set to \"Return All Matches\" to get multiple matches',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [{ _cnd: { lt: 4.5 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n];\n\nexport async function execute(\n\tthis: IExecuteFunctions,\n\tsheet: GoogleSheet,\n\tsheetName: string,\n): Promise<INodeExecutionData[]> {\n\tconst items = this.getInputData();\n\tconst nodeVersion = this.getNode().typeVersion;\n\tlet length = 1;\n\n\tif (nodeVersion > 4.1) {\n\t\tlength = items.length;\n\t}\n\n\tlet returnData: INodeExecutionData[] = [];\n\n\tfor (let itemIndex = 0; itemIndex < length; itemIndex++) {\n\t\treturnData = await readSheet.call(\n\t\t\tthis,\n\t\t\tsheet,\n\t\t\tsheetName,\n\t\t\titemIndex,\n\t\t\treturnData,\n\t\t\tnodeVersion,\n\t\t\titems,\n\t\t);\n\t}\n\n\treturn returnData;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var readOperation_exports = {};
|
|
20
|
+
__export(readOperation_exports, {
|
|
21
|
+
readSheet: () => readSheet
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(readOperation_exports);
|
|
24
|
+
var import_GoogleSheets = require("../../helpers/GoogleSheets.utils");
|
|
25
|
+
async function readSheet(sheet, sheetName, itemIndex, returnData, nodeVersion, items, rangeString, additionalOptions) {
|
|
26
|
+
const options = this.getNodeParameter("options", itemIndex, {});
|
|
27
|
+
const outputFormattingOption = options.outputFormatting?.values || {};
|
|
28
|
+
const dataLocationOnSheetOptions = options.dataLocationOnSheet?.values || additionalOptions || {};
|
|
29
|
+
if (dataLocationOnSheetOptions.rangeDefinition === void 0) {
|
|
30
|
+
dataLocationOnSheetOptions.rangeDefinition = "detectAutomatically";
|
|
31
|
+
}
|
|
32
|
+
const range = rangeString ?? (0, import_GoogleSheets.getRangeString)(sheetName, dataLocationOnSheetOptions);
|
|
33
|
+
const valueRenderMode = outputFormattingOption.general || "UNFORMATTED_VALUE";
|
|
34
|
+
const dateTimeRenderOption = outputFormattingOption.date || "FORMATTED_STRING";
|
|
35
|
+
const sheetData = await sheet.getData(
|
|
36
|
+
range,
|
|
37
|
+
valueRenderMode,
|
|
38
|
+
dateTimeRenderOption
|
|
39
|
+
);
|
|
40
|
+
if (sheetData === void 0 || sheetData.length === 0) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
const {
|
|
44
|
+
data,
|
|
45
|
+
headerRow: keyRowIndex,
|
|
46
|
+
firstDataRow: dataStartRowIndex
|
|
47
|
+
} = (0, import_GoogleSheets.prepareSheetData)(sheetData, dataLocationOnSheetOptions);
|
|
48
|
+
let responseData = [];
|
|
49
|
+
const lookupValues = this.getNodeParameter("filtersUI.values", itemIndex, []);
|
|
50
|
+
const inputData = data;
|
|
51
|
+
if (lookupValues.length) {
|
|
52
|
+
let returnAllMatches;
|
|
53
|
+
if (nodeVersion < 4.5) {
|
|
54
|
+
returnAllMatches = options.returnAllMatches === "returnAllMatches" ? true : false;
|
|
55
|
+
} else {
|
|
56
|
+
returnAllMatches = additionalOptions?.returnFirstMatch ?? options.returnFirstMatch ? false : true;
|
|
57
|
+
}
|
|
58
|
+
if (nodeVersion <= 4.1) {
|
|
59
|
+
for (let i = 1; i < items.length; i++) {
|
|
60
|
+
const itemLookupValues = this.getNodeParameter(
|
|
61
|
+
"filtersUI.values",
|
|
62
|
+
i,
|
|
63
|
+
[]
|
|
64
|
+
);
|
|
65
|
+
if (itemLookupValues.length) {
|
|
66
|
+
lookupValues.push(...itemLookupValues);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const combineFilters = this.getNodeParameter("combineFilters", itemIndex, "OR");
|
|
71
|
+
responseData = await sheet.lookupValues({
|
|
72
|
+
inputData,
|
|
73
|
+
keyRowIndex,
|
|
74
|
+
dataStartRowIndex,
|
|
75
|
+
lookupValues,
|
|
76
|
+
returnAllMatches,
|
|
77
|
+
nodeVersion,
|
|
78
|
+
combineFilters
|
|
79
|
+
});
|
|
80
|
+
} else {
|
|
81
|
+
responseData = sheet.structureArrayDataByColumn(inputData, keyRowIndex, dataStartRowIndex);
|
|
82
|
+
}
|
|
83
|
+
returnData.push(
|
|
84
|
+
...responseData.map((item) => {
|
|
85
|
+
return {
|
|
86
|
+
json: item,
|
|
87
|
+
pairedItem: { item: itemIndex }
|
|
88
|
+
};
|
|
89
|
+
})
|
|
90
|
+
);
|
|
91
|
+
return returnData;
|
|
92
|
+
}
|
|
93
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
94
|
+
0 && (module.exports = {
|
|
95
|
+
readSheet
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=readOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../nodes/Google/Sheet/v2/actions/utils/readOperation.ts"],"sourcesContent":["import type { IDataObject, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';\n\nimport { type GoogleSheet } from '../../helpers/GoogleSheet';\nimport type {\n\tILookupValues,\n\tRangeDetectionOptions,\n\tSheetRangeData,\n\tValueRenderOption,\n} from '../../helpers/GoogleSheets.types';\nimport { getRangeString, prepareSheetData } from '../../helpers/GoogleSheets.utils';\n\nexport async function readSheet(\n\tthis: IExecuteFunctions,\n\tsheet: GoogleSheet,\n\tsheetName: string,\n\titemIndex: number,\n\treturnData: INodeExecutionData[],\n\tnodeVersion: number,\n\titems: INodeExecutionData[],\n\trangeString?: string,\n\tadditionalOptions?: IDataObject,\n): Promise<INodeExecutionData[]> {\n\tconst options = this.getNodeParameter('options', itemIndex, {});\n\tconst outputFormattingOption =\n\t\t((options.outputFormatting as IDataObject)?.values as IDataObject) || {};\n\n\tconst dataLocationOnSheetOptions =\n\t\t((options.dataLocationOnSheet as IDataObject)?.values as RangeDetectionOptions) ||\n\t\tadditionalOptions ||\n\t\t{};\n\n\tif (dataLocationOnSheetOptions.rangeDefinition === undefined) {\n\t\tdataLocationOnSheetOptions.rangeDefinition = 'detectAutomatically';\n\t}\n\n\tconst range = rangeString ?? getRangeString(sheetName, dataLocationOnSheetOptions);\n\n\tconst valueRenderMode = (outputFormattingOption.general ||\n\t\t'UNFORMATTED_VALUE') as ValueRenderOption;\n\tconst dateTimeRenderOption = (outputFormattingOption.date || 'FORMATTED_STRING') as string;\n\n\tconst sheetData = (await sheet.getData(\n\t\trange,\n\t\tvalueRenderMode,\n\t\tdateTimeRenderOption,\n\t)) as SheetRangeData;\n\n\tif (sheetData === undefined || sheetData.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst {\n\t\tdata,\n\t\theaderRow: keyRowIndex,\n\t\tfirstDataRow: dataStartRowIndex,\n\t} = prepareSheetData(sheetData, dataLocationOnSheetOptions);\n\n\tlet responseData = [];\n\n\tconst lookupValues = this.getNodeParameter('filtersUI.values', itemIndex, []) as ILookupValues[];\n\n\tconst inputData = data as string[][];\n\n\tif (lookupValues.length) {\n\t\tlet returnAllMatches;\n\t\tif (nodeVersion < 4.5) {\n\t\t\treturnAllMatches = options.returnAllMatches === 'returnAllMatches' ? true : false;\n\t\t} else {\n\t\t\treturnAllMatches =\n\t\t\t\t(additionalOptions?.returnFirstMatch ?? options.returnFirstMatch) ? false : true;\n\t\t}\n\n\t\tif (nodeVersion <= 4.1) {\n\t\t\tfor (let i = 1; i < items.length; i++) {\n\t\t\t\tconst itemLookupValues = this.getNodeParameter(\n\t\t\t\t\t'filtersUI.values',\n\t\t\t\t\ti,\n\t\t\t\t\t[],\n\t\t\t\t) as ILookupValues[];\n\t\t\t\tif (itemLookupValues.length) {\n\t\t\t\t\tlookupValues.push(...itemLookupValues);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst combineFilters = this.getNodeParameter('combineFilters', itemIndex, 'OR') as 'AND' | 'OR';\n\n\t\tresponseData = await sheet.lookupValues({\n\t\t\tinputData,\n\t\t\tkeyRowIndex,\n\t\t\tdataStartRowIndex,\n\t\t\tlookupValues,\n\t\t\treturnAllMatches,\n\t\t\tnodeVersion,\n\t\t\tcombineFilters,\n\t\t});\n\t} else {\n\t\tresponseData = sheet.structureArrayDataByColumn(inputData, keyRowIndex, dataStartRowIndex);\n\t}\n\n\treturnData.push(\n\t\t...responseData.map((item) => {\n\t\t\treturn {\n\t\t\t\tjson: item,\n\t\t\t\tpairedItem: { item: itemIndex },\n\t\t\t};\n\t\t}),\n\t);\n\n\treturn returnData;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,0BAAiD;AAEjD,eAAsB,UAErB,OACA,WACA,WACA,YACA,aACA,OACA,aACA,mBACgC;AAChC,QAAM,UAAU,KAAK,iBAAiB,WAAW,WAAW,CAAC,CAAC;AAC9D,QAAM,yBACH,QAAQ,kBAAkC,UAA0B,CAAC;AAExE,QAAM,6BACH,QAAQ,qBAAqC,UAC/C,qBACA,CAAC;AAEF,MAAI,2BAA2B,oBAAoB,QAAW;AAC7D,+BAA2B,kBAAkB;AAAA,EAC9C;AAEA,QAAM,QAAQ,mBAAe,oCAAe,WAAW,0BAA0B;AAEjF,QAAM,kBAAmB,uBAAuB,WAC/C;AACD,QAAM,uBAAwB,uBAAuB,QAAQ;AAE7D,QAAM,YAAa,MAAM,MAAM;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,MAAI,cAAc,UAAa,UAAU,WAAW,GAAG;AACtD,WAAO,CAAC;AAAA,EACT;AAEA,QAAM;AAAA,IACL;AAAA,IACA,WAAW;AAAA,IACX,cAAc;AAAA,EACf,QAAI,sCAAiB,WAAW,0BAA0B;AAE1D,MAAI,eAAe,CAAC;AAEpB,QAAM,eAAe,KAAK,iBAAiB,oBAAoB,WAAW,CAAC,CAAC;AAE5E,QAAM,YAAY;AAElB,MAAI,aAAa,QAAQ;AACxB,QAAI;AACJ,QAAI,cAAc,KAAK;AACtB,yBAAmB,QAAQ,qBAAqB,qBAAqB,OAAO;AAAA,IAC7E,OAAO;AACN,yBACE,mBAAmB,oBAAoB,QAAQ,mBAAoB,QAAQ;AAAA,IAC9E;AAEA,QAAI,eAAe,KAAK;AACvB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACtC,cAAM,mBAAmB,KAAK;AAAA,UAC7B;AAAA,UACA;AAAA,UACA,CAAC;AAAA,QACF;AACA,YAAI,iBAAiB,QAAQ;AAC5B,uBAAa,KAAK,GAAG,gBAAgB;AAAA,QACtC;AAAA,MACD;AAAA,IACD;AAEA,UAAM,iBAAiB,KAAK,iBAAiB,kBAAkB,WAAW,IAAI;AAE9E,mBAAe,MAAM,MAAM,aAAa;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF,OAAO;AACN,mBAAe,MAAM,2BAA2B,WAAW,aAAa,iBAAiB;AAAA,EAC1F;AAEA,aAAW;AAAA,IACV,GAAG,aAAa,IAAI,CAAC,SAAS;AAC7B,aAAO;AAAA,QACN,MAAM;AAAA,QACN,YAAY,EAAE,MAAM,UAAU;AAAA,MAC/B;AAAA,IACD,CAAC;AAAA,EACF;AAEA,SAAO;AACR;","names":[]}
|
|
@@ -28,12 +28,30 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var versionDescription_exports = {};
|
|
30
30
|
__export(versionDescription_exports, {
|
|
31
|
+
authentication: () => authentication,
|
|
31
32
|
versionDescription: () => versionDescription
|
|
32
33
|
});
|
|
33
34
|
module.exports = __toCommonJS(versionDescription_exports);
|
|
34
35
|
var import_n8n_workflow = require("n8n-workflow");
|
|
35
36
|
var sheet = __toESM(require("./sheet/Sheet.resource"));
|
|
36
37
|
var spreadsheet = __toESM(require("./spreadsheet/SpreadSheet.resource"));
|
|
38
|
+
const authentication = {
|
|
39
|
+
displayName: "Authentication",
|
|
40
|
+
name: "authentication",
|
|
41
|
+
type: "options",
|
|
42
|
+
options: [
|
|
43
|
+
{
|
|
44
|
+
name: "Service Account",
|
|
45
|
+
value: "serviceAccount"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
|
|
49
|
+
name: "OAuth2 (recommended)",
|
|
50
|
+
value: "oAuth2"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
default: "oAuth2"
|
|
54
|
+
};
|
|
37
55
|
const versionDescription = {
|
|
38
56
|
displayName: "Google Sheets",
|
|
39
57
|
name: "googleSheets",
|
|
@@ -84,23 +102,7 @@ const versionDescription = {
|
|
|
84
102
|
}
|
|
85
103
|
],
|
|
86
104
|
properties: [
|
|
87
|
-
|
|
88
|
-
displayName: "Authentication",
|
|
89
|
-
name: "authentication",
|
|
90
|
-
type: "options",
|
|
91
|
-
options: [
|
|
92
|
-
{
|
|
93
|
-
name: "Service Account",
|
|
94
|
-
value: "serviceAccount"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
|
|
98
|
-
name: "OAuth2 (recommended)",
|
|
99
|
-
value: "oAuth2"
|
|
100
|
-
}
|
|
101
|
-
],
|
|
102
|
-
default: "oAuth2"
|
|
103
|
-
},
|
|
105
|
+
authentication,
|
|
104
106
|
{
|
|
105
107
|
displayName: "Resource",
|
|
106
108
|
name: "resource",
|
|
@@ -124,6 +126,7 @@ const versionDescription = {
|
|
|
124
126
|
};
|
|
125
127
|
// Annotate the CommonJS export names for ESM import in node:
|
|
126
128
|
0 && (module.exports = {
|
|
129
|
+
authentication,
|
|
127
130
|
versionDescription
|
|
128
131
|
});
|
|
129
132
|
//# sourceMappingURL=versionDescription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../nodes/Google/Sheet/v2/actions/versionDescription.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-filename-against-convention */\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../../nodes/Google/Sheet/v2/actions/versionDescription.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-filename-against-convention */\nimport type { INodeProperties, INodeTypeDescription } from 'n8n-workflow';\nimport { NodeConnectionTypes } from 'n8n-workflow';\n\nimport * as sheet from './sheet/Sheet.resource';\nimport * as spreadsheet from './spreadsheet/SpreadSheet.resource';\n\nexport const authentication: INodeProperties = {\n\tdisplayName: 'Authentication',\n\tname: 'authentication',\n\ttype: 'options',\n\toptions: [\n\t\t{\n\t\t\tname: 'Service Account',\n\t\t\tvalue: 'serviceAccount',\n\t\t},\n\t\t{\n\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased\n\t\t\tname: 'OAuth2 (recommended)',\n\t\t\tvalue: 'oAuth2',\n\t\t},\n\t],\n\tdefault: 'oAuth2',\n};\n\nexport const versionDescription: INodeTypeDescription = {\n\tdisplayName: 'Google Sheets',\n\tname: 'googleSheets',\n\ticon: 'file:googleSheets.svg',\n\tgroup: ['input', 'output'],\n\tversion: [3, 4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6],\n\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\tdescription: 'Read, update and write data to Google Sheets',\n\tdefaults: {\n\t\tname: 'Google Sheets',\n\t},\n\tinputs: [NodeConnectionTypes.Main],\n\toutputs: [NodeConnectionTypes.Main],\n\tusableAsTool: true,\n\thints: [\n\t\t{\n\t\t\tmessage:\n\t\t\t\t\"Use the 'Minimise API Calls' option for greater efficiency if your sheet is uniformly formatted without gaps between columns or rows\",\n\t\t\tdisplayCondition:\n\t\t\t\t'={{$parameter[\"operation\"] === \"append\" && !$parameter[\"options\"][\"useAppend\"]}}',\n\t\t\twhenToDisplay: 'beforeExecution',\n\t\t\tlocation: 'outputPane',\n\t\t},\n\t\t{\n\t\t\tmessage: 'No columns found in Google Sheet. All rows will be appended',\n\t\t\tdisplayCondition:\n\t\t\t\t'={{ [\"appendOrUpdate\", \"append\"].includes($parameter[\"operation\"]) && $parameter?.columns?.mappingMode === \"defineBelow\" && !$parameter?.columns?.schema?.length }}',\n\t\t\twhenToDisplay: 'beforeExecution',\n\t\t\tlocation: 'outputPane',\n\t\t},\n\t],\n\tcredentials: [\n\t\t{\n\t\t\tname: 'googleApi',\n\t\t\trequired: true,\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tauthentication: ['serviceAccount'],\n\t\t\t\t},\n\t\t\t},\n\t\t\ttestedBy: 'googleApiCredentialTest',\n\t\t},\n\t\t{\n\t\t\tname: 'googleSheetsOAuth2Api',\n\t\t\trequired: true,\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tauthentication: ['oAuth2'],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n\tproperties: [\n\t\tauthentication,\n\t\t{\n\t\t\tdisplayName: 'Resource',\n\t\t\tname: 'resource',\n\t\t\ttype: 'options',\n\t\t\tnoDataExpression: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Document',\n\t\t\t\t\tvalue: 'spreadsheet',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'Sheet Within Document',\n\t\t\t\t\tvalue: 'sheet',\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: 'sheet',\n\t\t},\n\t\t...sheet.descriptions,\n\t\t...spreadsheet.descriptions,\n\t],\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAoC;AAEpC,YAAuB;AACvB,kBAA6B;AAEtB,MAAM,iBAAkC;AAAA,EAC9C,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,IACR;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,IACA;AAAA;AAAA,MAEC,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EACA,SAAS;AACV;AAEO,MAAM,qBAA2C;AAAA,EACvD,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO,CAAC,SAAS,QAAQ;AAAA,EACzB,SAAS,CAAC,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC5C,UAAU;AAAA,EACV,aAAa;AAAA,EACb,UAAU;AAAA,IACT,MAAM;AAAA,EACP;AAAA,EACA,QAAQ,CAAC,wCAAoB,IAAI;AAAA,EACjC,SAAS,CAAC,wCAAoB,IAAI;AAAA,EAClC,cAAc;AAAA,EACd,OAAO;AAAA,IACN;AAAA,MACC,SACC;AAAA,MACD,kBACC;AAAA,MACD,eAAe;AAAA,MACf,UAAU;AAAA,IACX;AAAA,IACA;AAAA,MACC,SAAS;AAAA,MACT,kBACC;AAAA,MACD,eAAe;AAAA,MACf,UAAU;AAAA,IACX;AAAA,EACD;AAAA,EACA,aAAa;AAAA,IACZ;AAAA,MACC,MAAM;AAAA,MACN,UAAU;AAAA,MACV,gBAAgB;AAAA,QACf,MAAM;AAAA,UACL,gBAAgB,CAAC,gBAAgB;AAAA,QAClC;AAAA,MACD;AAAA,MACA,UAAU;AAAA,IACX;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,UAAU;AAAA,MACV,gBAAgB;AAAA,QACf,MAAM;AAAA,UACL,gBAAgB,CAAC,QAAQ;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACA,YAAY;AAAA,IACX;AAAA,IACA;AAAA,MACC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,kBAAkB;AAAA,MAClB,SAAS;AAAA,QACR;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,QACR;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MACA,SAAS;AAAA,IACV;AAAA,IACA,GAAG,MAAM;AAAA,IACT,GAAG,YAAY;AAAA,EAChB;AACD;","names":[]}
|
|
@@ -22,6 +22,7 @@ __export(YouTube_node_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(YouTube_node_exports);
|
|
24
24
|
var import_n8n_workflow = require("n8n-workflow");
|
|
25
|
+
var import_stream = require("stream");
|
|
25
26
|
var import_ISOCountryCodes = require("../../../utils/ISOCountryCodes");
|
|
26
27
|
var import_ChannelDescription = require("./ChannelDescription");
|
|
27
28
|
var import_GenericFunctions = require("./GenericFunctions");
|
|
@@ -715,8 +716,9 @@ class YouTube {
|
|
|
715
716
|
contentLength = metadata.fileSize;
|
|
716
717
|
mimeType = metadata.mimeType ?? binaryData.mimeType;
|
|
717
718
|
} else {
|
|
718
|
-
|
|
719
|
-
|
|
719
|
+
const buffer = Buffer.from(binaryData.data, import_n8n_workflow.BINARY_ENCODING);
|
|
720
|
+
fileContent = import_stream.Readable.from(buffer);
|
|
721
|
+
contentLength = buffer.length;
|
|
720
722
|
mimeType = binaryData.mimeType;
|
|
721
723
|
}
|
|
722
724
|
const payload = {
|