appsmithorg/appsmith · error · AppsmithPluginException
PE-ARG-5000
PE-ARG-5000
Error message
Missing required field 'Spreadsheet Url'
What it means
RowsDeleteMethod.validateExecutionMethodRequest throws when spreadsheetId is null or blank. The delete action needs to know which spreadsheet to target. Code PE-ARG-5000. Message says 'Spreadsheet Url' because the datasource field is labeled Spreadsheet URL (Appsmith stores it parsed into spreadsheetId).
Source
Thrown at app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/RowsDeleteMethod.java:40
/**
* API reference: https://developers.google.com/sheets/api/samples/rowcolumn#delete_rows_or_columns
*/
public class RowsDeleteMethod implements ExecutionMethod, TemplateMethod {
ObjectMapper objectMapper;
public RowsDeleteMethod(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
public RowsDeleteMethod() {}
@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.getRowIndex() == null || methodConfig.getRowIndex().isBlank()) {
throw new AppsmithPluginException(
AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR, ErrorMessages.MISSING_ROW_INDEX_ERROR_MSG);
}
int rowIndex = 0;
try {
rowIndex = Integer.parseInt(methodConfig.getRowIndex());
if (rowIndex < 0) {
throw new AppsmithPluginException(
AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR, ErrorMessages.INVALID_ROW_INDEX_ERROR_MSG);
}View on GitHub (pinned to 8cd9021c24)
Solutions
- Provide a valid Google Sheets URL (https://docs.google.com/spreadsheets/d/<ID>/edit) in the datasource/query.
- If dynamic, ensure the binding resolves before the query runs, e.g. {{ appsmith.store.sheetUrl }}.
- Confirm the datasource OAuth2 authorization is still valid.
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 Delete Row query whose Spreadsheet URL / spreadsheetUrl binding is empty, null, or whitespace.
Common situations: Datasource not fully configured; URL field left blank after duplicating an action; binding to a widget value that is empty on first render.
Related errors
AI-assisted analysis of appsmithorg/appsmith@8cd9021c24 (2026-08-12).
Data as JSON: /api/errors/647042bf94b40cc5.
Report an issue: GitHub.