apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: google-sheets-source annotations: camel.apache.org/kamelet.support.level: "Stable" camel.apache.org/catalog.version: "4.10.2" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA2NCA4OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjQgODg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojMERDNTRDO30KCS5zdDF7ZmlsbDojMDg5NjJEO30KCS5zdDJ7ZmlsbDojRkRGRkZGO30KPC9zdHlsZT4KPGcgaWQ9IkxheWVyXzQiPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTU4LDg4SDZjLTMuMywwLTYtMi43LTYtNlY2YzAtMy4zLDIuNy02LDYtNmgzNmwyMiwyMnY2MEM2NCw4NS4zLDYxLjMsODgsNTgsODh6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDIsMGwyMiwyMkg0MlYweiIvPgoJPHBhdGggY2xhc3M9InN0MiIgZD0iTTEyLDM0LjV2MjhoNDB2LTI4SDEyeiBNMTcsMzkuNWgxMi41VjQ2SDE3VjM5LjV6IE0xNyw1MWgxMi41djYuNUgxN1Y1MXogTTQ3LDU3LjVIMzQuNVY1MUg0N1Y1Ny41eiBNNDcsNDYKCQlIMzQuNXYtNi41SDQ3VjQ2eiIvPgo8L2c+Cjwvc3ZnPgo=" camel.apache.org/provider: "Apache Software Foundation" camel.apache.org/kamelet.group: "Google Sheets" camel.apache.org/kamelet.namespace: "GCP" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Google Sheets Source" description: |- Receive data from Google Sheets. required: - spreadsheetId - clientId - accessToken - refreshToken - clientSecret type: object properties: spreadsheetId: title: Spreadsheet ID description: The Spreadsheet ID to be used as events source type: string clientId: title: Client Id description: Client ID of the sheets application type: string format: password x-descriptors: - urn:camel:group:credentials clientSecret: title: Client Secret description: Client Secret of the sheets application type: string format: password x-descriptors: - urn:camel:group:credentials accessToken: title: Access Token description: OAuth 2 access token for google sheets application. This typically expires after an hour so refreshToken is recommended for long term usage. type: string format: password x-descriptors: - urn:camel:group:credentials refreshToken: title: Refresh Token description: OAuth 2 refresh token for google sheets application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. type: string format: password x-descriptors: - urn:camel:group:credentials delay: title: Delay description: The number of milliseconds before the next poll type: integer default: 500 repeatCount: title: Repeat Count description: Specifies a maximum limit of number of fires type: integer applicationName: title: Application name description: Google Sheets application name type: string splitResults: title: Split Results description: True if value range result should be split into rows or columns to process each of them individually. type: boolean default: true range: title: Cells Range description: The range of rows and columns in a sheet to get data from. type: string example: "A1:B3" majorDimension: title: Major Dimension description: Specifies the major dimension that the given values should use (ROWS or COLUMNS). type: string enum: [ "COLUMNS", "ROWS" ] default: "ROWS" example: "ROWS" columnNames: title: Column Names description: Optional custom column names that map to cell coordinates based on their position. type: string default: "A" dataTypes: out: default: json headers: CamelGoogleSheets.range: title: Range description: Cells range to write data to. default: A:A type: string CamelGoogleSheets.spreadsheetId: title: Spreadsheet id description: The Spreadsheet ID to be used as identifier. type: string CamelGoogleSheets.majorDimension: title: Major dimension description: Specifies the major dimension that the given values should use (ROWS or COLUMNS). default: ROWS type: string CamelGoogleSheets.columnNames: title: Column Names description: Optional custom column names that map to cell coordinates based on their position. default: A type: string CamelGoogleSheets.splitResults: title: Split Results description: True if value range result should be split into rows or columns to process each of them individually. default: "true" type: boolean types: json: format: "application-json" description: |- Json representation of a GoogleSheets ValueRange object that holds all values for the given cell range. Or Json array of values for a single row/column in the range when 'splitResults' mode is enabled. mediaType: application/json json-struct: format: "google-sheets:application-x-struct" description: |- Special Json representation of Google Sheets ValueRange object with just row and column values as a generic JsonNode. Each cell value is represented by a Json property named after the respective row (A-Z) or column (1-n) depending on the given majorDimension. Custom column names are supported in order to use custom property names instead of generic row (A-Z) or column (1-n) coordinates. The produced Json struct is ready to be transformed back into a proper Google Sheets ValueRange object that can be used in an update/append values operation. mediaType: application/json cloudevents: format: "google-sheets-stream:application-cloudevents" description: |- Output data type represents Google Sheets Stream response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the Spreasheet and its derived object. headers: CamelCloudEventID: title: CloudEvent ID description: The Camel exchange id set as event id type: string CamelCloudEventType: title: CloudEvent Type description: The event type default: "org.apache.camel.event.google.sheets.stream.consume" type: string CamelCloudEventSource: title: CloudEvent Source description: The event source. By default, the Spreadsheet Id with prefix "google.sheets.stream.". type: string CamelCloudEventSubject: title: CloudEvent Subject description: The event subject. Usually the Spreadsheet URL. type: string CamelCloudEventTime: title: CloudEvent Time description: The exchange creation timestamp as event time. type: string dependencies: - "camel:core" - "camel:jackson" - "camel:kamelet" - "camel:google-sheets" template: from: uri: "google-sheets-stream://{{spreadsheetId}}" parameters: clientId: "{{clientId}}" accessToken: "{{accessToken}}" refreshToken: "{{refreshToken}}" clientSecret: "{{clientSecret}}" delay: "{{delay}}" applicationName: "{{?applicationName}}" splitResults: "{{splitResults}}" range: "{{?range}}" repeatCount: "{{?repeatCount}}" steps: - marshal: json: {} - setHeader: name: CamelGoogleSheets.spreadsheetId simple: "{{spreadsheetId}}" - setHeader: name: CamelGoogleSheets.range simple: "{{?range}}" - setHeader: name: CamelGoogleSheets.majorDimension simple: "{{?majorDimension}}" - setHeader: name: CamelGoogleSheets.columnNames simple: "{{?columnNames}}" - setHeader: name: CamelGoogleSheets.splitResults simple: "{{?splitResults}}" - to: "kamelet:sink"