{ "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.22.1", "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.", "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}}" } }, { "transformDataType": { "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}}" } } } ] } } }, "propertiesSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "Google Sheets Sink", "description": "Send data to Google Sheets and update/append values on a spreadsheet.", "required": [ "spreadsheetId", "clientId", "accessToken", "refreshToken", "clientSecret" ], "properties": { "spreadsheetId": { "type": "string", "title": "Spreadsheet ID", "description": "The Spreadsheet ID to be used as identifier" }, "clientId": { "type": "string", "title": "Client Id", "description": "Client ID of the sheets application", "format": "password" }, "clientSecret": { "type": "string", "title": "Client Secret", "description": "Client Secret of the sheets application", "format": "password" }, "accessToken": { "type": "string", "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.", "format": "password" }, "refreshToken": { "type": "string", "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.", "format": "password" }, "applicationName": { "type": "string", "title": "Application Name", "description": "Google Sheets application name" }, "operation": { "type": "string", "title": "Operation Mode", "description": "Operation to execute (update or append)", "enum": [ "update", "append" ], "default": "append" }, "range": { "type": "string", "title": "Cells Range", "description": "The cell range of rows and columns to write data to." }, "majorDimension": { "type": "string", "title": "Major Dimension", "description": "Specifies the major dimension that the given values should use (ROWS or COLUMNS).", "enum": [ "COLUMNS", "ROWS" ], "default": "ROWS" }, "columnNames": { "type": "string", "title": "Column Names", "description": "Optional custom column names that map to cell coordinates based on their position.", "default": "A" }, "valueInputOption": { "type": "string", "title": "Value Input Option", "description": "Controls how the entered values should be be interpreted when adding them.", "enum": [ "USER_ENTERED", "RAW" ], "default": "USER_ENTERED" } } } }