appsmithorg/appsmith · error · AppsmithPluginException

PE-ARG-5000

PE-ARG-5000

Error message

Missing required field 'Spreadsheet Url'

What it means

Thrown by RowsBulkAppendMethod.validateExecutionMethodRequest when methodConfig.getSpreadsheetId() is null or blank. Code PE-ARG-5000 (PLUGIN_EXECUTE_ARGUMENT_ERROR). The spreadsheet URL is the first mandatory field checked; without it the plugin cannot build the Sheets API URI for the bulk append.

Source

Thrown at app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/RowsBulkAppendMethod.java:50

import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

/**
 * API reference: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append
 */
public class RowsBulkAppendMethod implements ExecutionMethod {

    ObjectMapper objectMapper;

    public RowsBulkAppendMethod(ObjectMapper objectMapper) {
        this.objectMapper = objectMapper;
    }

    @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

  1. Set the 'Spreadsheet Url' field to a valid https://docs.google.com/spreadsheets/d/.../ URL.
  2. If bound dynamically, ensure the source widget/property is populated before the query runs.
  3. Confirm the datasource authorization is intact (re-authorize if the token expired).

Example fix

// before
Spreadsheet Url: {{ }}

// after
Spreadsheet Url: https://docs.google.com/spreadsheets/d/1AbC.../edit
Defensive patterns

Strategy: validation

Validate before calling

// Check the spreadsheet URL/id is present before running bulk append
String id = methodConfig.getSpreadsheetId();
if (id == null || id.isBlank()) {
    throw new IllegalArgumentException("'Spreadsheet Url' is required");
}

Type guard

boolean hasSpreadsheetId(com.external.config.MethodConfig mc) {
    return mc.getSpreadsheetId() != null && !mc.getSpreadsheetId().isBlank();
}

Prevention

When it happens

Trigger: Running a 'Bulk Append Rows' query with the 'Spreadsheet Url' field empty, or a binding whose mustache resolved to an empty string. The null/blank check fires MISSING_SPREADSHEET_URL_ERROR_MSG.

Common situations: Datasource not fully configured, the URL field cleared by a user, or a dynamic binding to a widget/property that returned empty.

Related errors


AI-assisted analysis of appsmithorg/appsmith@8cd9021c24 (2026-08-12). Data as JSON: /api/errors/9f18f7c013929ed1. Report an issue: GitHub.