{"record":{"id":"94bed5db74fe704c","repo":"appsmithorg/appsmith","slug":"pe-arg-5000-94bed5","errorCode":"PE-ARG-5000","errorMessage":"Missing required field 'Spreadsheet Url'","messagePattern":"Missing required field 'Spreadsheet Url'","errorType":"exception","errorClass":"AppsmithPluginException","httpStatus":500,"severity":"error","filePath":"app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/RowsAppendMethod.java","lineNumber":53,"sourceCode":"\n/**\n * API reference: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append\n */\npublic class RowsAppendMethod implements ExecutionMethod, TemplateMethod {\n\n    ObjectMapper objectMapper;\n\n    public RowsAppendMethod(ObjectMapper objectMapper) {\n        this.objectMapper = objectMapper;\n    }\n\n    public RowsAppendMethod() {}\n\n    @Override\n    public boolean validateExecutionMethodRequest(MethodConfig methodConfig) {\n        if (methodConfig.getSpreadsheetId() == null\n                || methodConfig.getSpreadsheetId().isBlank()) {\n            throw new AppsmithPluginException(\n                    AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR, ErrorMessages.MISSING_SPREADSHEET_URL_ERROR_MSG);\n        }\n        if (methodConfig.getSheetName() == null || methodConfig.getSheetName().isBlank()) {\n            throw new AppsmithPluginException(\n                    AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,\n                    ErrorMessages.MISSING_SPREADSHEET_NAME_ERROR_MSG);\n        }\n        if (methodConfig.getTableHeaderIndex() != null\n                && !methodConfig.getTableHeaderIndex().isBlank()) {\n            try {\n                if (Integer.parseInt(methodConfig.getTableHeaderIndex()) <= 0) {\n                    throw new AppsmithPluginException(\n                            AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,\n                            ErrorMessages.INVALID_TABLE_HEADER_INDEX);\n                }\n            } catch (NumberFormatException e) {\n                throw new AppsmithPluginException(\n                        AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR, ErrorMessages.INVALID_TABLE_HEADER_INDEX);","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/appsmithorg/appsmith/blob/8cd9021c24cdbea1c3c12c966073708e83db60c2/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/RowsAppendMethod.java#L35-L71","documentation":"Thrown by RowsAppendMethod.validateExecutionMethodRequest (RowsAppendMethod.java:53) when `methodConfig.getSpreadsheetId()` is null or blank. The 'Append Rows' action appends to an existing sheet, so it needs the target spreadsheet id derived from the URL. Code PE-ARG-5000 (MISSING_SPREADSHEET_URL_ERROR_MSG).","triggerScenarios":"Running the 'Append Row(s)' action with the Spreadsheet URL field empty, whitespace-only, or a URL whose id could not be extracted (so the derived id is null). This is the first validation, firing before sheet-name and header-index checks.","commonSituations":"URL binding resolves to empty because the source widget has no value; the field was cleared; a shortened share link was used that did not match the extraction regex; the URL lacks the `https://` scheme.","solutions":["Provide a full URL: `https://docs.google.com/spreadsheets/d/<id>/edit`.","Ensure the bound widget has a non-empty value before the append action runs.","Confirm the URL matches `https://docs.google.com/spreadsheets/d/<id>/` so id extraction succeeds."],"exampleFix":"// before\n{\n  \"sheetUrl\": \"\"\n}\n// after\n{\n  \"sheetUrl\": {{spreadsheetSelect.selectedOptionValue}}\n}","handlingStrategy":"validation","validationCode":"// Ensure a valid URL is bound before enabling Append Rows.\nfunction hasSpreadsheetUrl(url) {\n  return typeof url === \"string\" && /https:\\/\\/docs\\.google\\.com\\/spreadsheets\\/d\\//.test(url);\n}\n// Disable the append button: {{ !hasSpreadsheetUrl(urlInput.text) || !sheetNameInput.text }}","typeGuard":"function isNonBlankString(v) { return typeof v === \"string\" && v.trim().length > 0; }","tryCatchPattern":"if (appendRows.error && appendRows.error.message.includes(\"Missing required field 'Spreadsheet Url'\")) {\n  showToast(\"Select a target spreadsheet first.\", \"error\");\n}","preventionTips":["Bind the Spreadsheet URL to a widget with a guaranteed value.","Disable append until URL and sheet name are both populated.","Validate the canonical URL pattern client-side."],"tags":["google-sheets","appsmith","input-validation","append-rows","required-field"],"backgroundTag":null,"analyzedSha":"8cd9021c24cdbea1c3c12c966073708e83db60c2","analyzedAt":"2026-08-12T22:14:19.293Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}