{"record":{"id":"da4327db414bd059","repo":"appsmithorg/appsmith","slug":"pe-arg-5000-da4327","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/RowsGetMethod.java","lineNumber":59,"sourceCode":"\n    public RowsGetMethod() {}\n\n    // Used to capture the range of columns in this request. The handling for this regex makes sure that\n    // all possible combinations of A1 notation for a range map to a common format\n    Pattern findAllRowsPattern = Pattern.compile(\"([a-zA-Z]*)\\\\d*:([a-zA-Z]*)\\\\d*\");\n\n    // The starting row for a range is captured using this pattern to find its relative index from table heading\n    Pattern findOffsetRowPattern = Pattern.compile(\"(\\\\d+):\");\n\n    // Since the value for this pattern is coming from an API response, it also contains the sheet name\n    // We use this pattern to retrieve only range information\n    Pattern sheetRangePattern = Pattern.compile(\".*!([a-zA-Z]*)\\\\d*:([a-zA-Z]*)\\\\d*\");\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,","sourceCodeStart":41,"sourceCodeEnd":77,"githubUrl":"https://github.com/appsmithorg/appsmith/blob/8cd9021c24cdbea1c3c12c966073708e83db60c2/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/RowsGetMethod.java#L41-L77","documentation":"RowsGetMethod.validateExecutionMethodRequest throws when spreadsheetId is null or blank. The read-rows flow needs a target spreadsheet URL. Code PE-ARG-5000; message says 'Spreadsheet Url' to match the datasource field label.","triggerScenarios":"A Get Rows / Read query whose Spreadsheet URL binding is empty or whitespace - e.g. datasource not configured, or a dynamic URL field that is empty on first render.","commonSituations":"Datasource copied without its URL; binding references an unset appsmith.store value; URL field cleared by mistake.","solutions":["Provide a valid Google Sheets URL in the datasource/query.","If dynamic, ensure the binding resolves before the query runs (default the value).","Confirm OAuth2 authorization for the datasource is active."],"exampleFix":"// before\n{\n  \"sheetUrl\": \"\"\n}\n// after\n{\n  \"sheetUrl\": \"https://docs.google.com/spreadsheets/d/1AbC.../edit\"\n}","handlingStrategy":"validation","validationCode":"boolean ok = methodConfig.getSpreadsheetId() != null\n    && !methodConfig.getSpreadsheetId().isBlank();","typeGuard":"static boolean hasSpreadsheetId(MethodConfig c) {\n    return c != null && c.getSpreadsheetId() != null && !c.getSpreadsheetId().isBlank();\n}","tryCatchPattern":null,"preventionTips":["Configure the datasource Spreadsheet URL once and reuse it.","For dynamic URLs, default to a stored value.","Re-authorize the OAuth2 datasource periodically."],"tags":["google-sheets","appsmith","validation","spreadsheet-url","required-field","get-rows"],"backgroundTag":null,"analyzedSha":"8cd9021c24cdbea1c3c12c966073708e83db60c2","analyzedAt":"2026-08-12T22:14:19.293Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}