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

  1. Provide a valid Google Sheets URL (https://docs.google.com/spreadsheets/d/<ID>/edit) in the datasource/query.
  2. If dynamic, ensure the binding resolves before the query runs, e.g. {{ appsmith.store.sheetUrl }}.
  3. 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

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.