appsmithorg/appsmith · error · AppsmithPluginException
PE-ARG-5000
PE-ARG-5000
Error message
Missing required field 'Spreadsheet Url'
What it means
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.
Source
Thrown at app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/RowsGetMethod.java:59
public RowsGetMethod() {}
// Used to capture the range of columns in this request. The handling for this regex makes sure that
// all possible combinations of A1 notation for a range map to a common format
Pattern findAllRowsPattern = Pattern.compile("([a-zA-Z]*)\\d*:([a-zA-Z]*)\\d*");
// The starting row for a range is captured using this pattern to find its relative index from table heading
Pattern findOffsetRowPattern = Pattern.compile("(\\d+):");
// Since the value for this pattern is coming from an API response, it also contains the sheet name
// We use this pattern to retrieve only range information
Pattern sheetRangePattern = Pattern.compile(".*!([a-zA-Z]*)\\d*:([a-zA-Z]*)\\d*");
@Override
public boolean validateExecutionMethodRequest(MethodConfig methodConfig) {
if (methodConfig.getSpreadsheetId() == null
|| methodConfig.getSpreadsheetId().isBlank()) {
throw new AppsmithPluginException(
AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR, ErrorMessages.MISSING_SPREADSHEET_URL_ERROR_MSG);
}
if (methodConfig.getSheetName() == null || methodConfig.getSheetName().isBlank()) {
throw new AppsmithPluginException(
AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,
ErrorMessages.MISSING_SPREADSHEET_NAME_ERROR_MSG);
}
if (methodConfig.getTableHeaderIndex() != null
&& !methodConfig.getTableHeaderIndex().isBlank()) {
try {
if (Integer.parseInt(methodConfig.getTableHeaderIndex()) <= 0) {
throw new AppsmithPluginException(
AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,
ErrorMessages.INVALID_TABLE_HEADER_INDEX);
}
} catch (NumberFormatException e) {
throw new AppsmithPluginException(
AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,View on GitHub (pinned to 8cd9021c24)
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.
Example fix
// before
{
"sheetUrl": ""
}
// after
{
"sheetUrl": "https://docs.google.com/spreadsheets/d/1AbC.../edit"
} Defensive patterns
Strategy: validation
Validate before calling
boolean ok = methodConfig.getSpreadsheetId() != null
&& !methodConfig.getSpreadsheetId().isBlank(); Type guard
static boolean hasSpreadsheetId(MethodConfig c) {
return c != null && c.getSpreadsheetId() != null && !c.getSpreadsheetId().isBlank();
} Prevention
- Configure the datasource Spreadsheet URL once and reuse it.
- For dynamic URLs, default to a stored value.
- Re-authorize the OAuth2 datasource periodically.
When it happens
Trigger: 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.
Common situations: Datasource copied without its URL; binding references an unset appsmith.store value; URL field cleared by mistake.
Related errors
AI-assisted analysis of appsmithorg/appsmith@8cd9021c24 (2026-08-12).
Data as JSON: /api/errors/da4327db414bd059.
Report an issue: GitHub.