apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: google-sheets-sink 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: "sink" spec: definition: title: "Google Sheets Sink" description: |- Send data to Google Sheets and update/append values on a spreadsheet. required: - spreadsheetId - clientId - accessToken - refreshToken - clientSecret type: object properties: spreadsheetId: title: Spreadsheet ID description: The Spreadsheet ID to be used as identifier 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 applicationName: title: Application Name description: Google Sheets application name type: string operation: title: Operation Mode description: Operation to execute (update or append) type: string enum: [ "update", "append" ] default: append example: append range: title: Cells Range description: The cell range of rows and columns to write data to. 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" valueInputOption: title: Value Input Option description: Controls how the entered values should be be interpreted when adding them. type: string enum: [ "USER_ENTERED", "RAW" ] default: "USER_ENTERED" example: "USER_ENTERED" dataTypes: in: default: json-struct types: 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 given Json struct is ready to be transformed into a proper Google Sheets ValueRange object that can be used in the update/append values operation. The data type uses a set of header entries to determine properties such as spreadsheetId, the target cell range, the majorDimension and so on. 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.valueInputOption: title: Value Input Option description: Controls how the entered values should be be interpreted when adding them. default: USER_ENTERED type: string mediaType: application/json dependencies: - "camel:core" - "camel:jackson" - "camel:kamelet" - "camel:google-sheets" template: from: uri: "kamelet:source" steps: - 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.valueInputOption simple: "{{?valueInputOption}}" - transform: toType: "google-sheets:application-x-struct" - to: uri: "google-sheets:data/{{operation}}" parameters: spreadsheetId: "{{spreadsheetId}}" clientId: "{{clientId}}" accessToken: "{{accessToken}}" refreshToken: "{{refreshToken}}" clientSecret: "{{clientSecret}}" applicationName: "{{?applicationName}}" range: "{{?range}}"