A Google Apps Script library for managing Google Cloud Lakehouse for Apache Iceberg. Leverages BigQuery Advanced Service (v2) and Iceberg REST Catalog / Lakehouse architecture.
IcebergApp is a Google Apps Script library with 22 tools, but exhibits critical definition gaps. Most tools lack proper input schemas, parameters are documented in JSDoc comments but not exposed as structured JSON Schema. Tool names are inconsistent: some use verb_noun (openByCatalog, generateEmbedding), others are imperative (onOpen, openLakehouseConsole), and several use internal naming conventions (resolveGcpConfig_, cleanupResidualHeadlessResources_). Descriptions vary widely in quality; some are detailed (generateEmbedding: 180+ chars), others are vague (onOpen: 50 chars). No output schemas are documented. Error handling is minimal, no recovery guidance or error classification. The framework (Google Apps Script) is not MCP-native; tools are exposed via JSDoc, not MCP tool registration. This is a library, not an MCP server.
Universal cleanup function: completely purges all resources created by sample scripts. Performs both targeted registered resource deletion and wildcard sweeps across BigQuery and Google Drive to guarantee zero residual artifacts.
Sweeps and purges all residual headless resources tracked in the persistent registry.
Sweeps and purges all residual resources tracked in the persistent registry or matching test patterns.
Creates a new Apache Iceberg / BigLake table with specified schema. Automatically ensures the parent catalog/dataset exists prior to creation. When `options.connection` is specified, generates an Apache Iceberg managed table DDL with WITH CONNECTION. When `options.connection` is omitted, provisions a Lakehouse-optimized BigQuery table.
Ensures that the BigQuery Dataset (Lakehouse Catalog) exists in the designated location. If the dataset does not exist, it is created automatically.
Generates a vector embedding using the Gemini API if GEMINI_API_KEY is configured. Supports both text strings and Google Apps Script binary Blobs (images, documents, audio).
Not an MCP server, Google Apps Script library with JSDoc-only tool definitions. No MCP protocol implementation, no tool registration via MCP schema, no structured input/output schemas. Tools are exposed as static methods and class methods, not MCP tools.
Inconsistent naming conventions. Internal helper functions use trailing underscore (resolveGcpConfig_, cleanupResidualHeadlessResources_), imperative names (onOpen, promptGcpConfig_), and mixed verb_noun patterns. LLMs cannot reliably infer intent from names alone.
No output schemas documented. Tools return complex objects (e.g., uploadToDrive returns {id, name, mimeType, size, webViewLink, url}) but LLMs have no formal schema to parse results or plan downstream calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
Retrieves the persistent registry of sample resources stored in ScriptProperties.
Returns active state and metadata to the sidebar UI.
Installs custom menu upon spreadsheet opening.
Entry point: Opens the IcebergApp instance for a specific Lakehouse Catalog (BigQuery Dataset).
Opens the modern dark-themed sidebar console for Iceberg Lakehouse management.
Prompts user for GCP Project ID and Region.
Standalone Emergency Purge Function. Run this function from the Apps Script Editor toolbar to immediately sweep and remove all residual test resources (Drive Docs, BigQuery Datasets, GCS Buckets) created by tests.
Registers an ephemeral or created sample resource in ScriptProperties immediately. This guarantees that even if the script execution is aborted, timed out, or interrupted midway, the resource identifier is preserved and can be swept.
Resolves GCP Project ID and Region across ScriptProperties and UserProperties. Supports variations: ICEBERG_PROJECT_ID, PROP_KEY_PROJECT_ID, PROJECT_ID, GCP_PROJECT_ID.
Robust GCP Configuration Resolver. Resolves Project ID and Region across direct constant, ScriptProperties, and UserProperties supporting all common key variations.
Resolves GCP Project ID, Region, and Gemini API Key across ScriptProperties and UserProperties.
Saves or updates GCP configuration from the sidebar.
Utility helper to set GCP credentials into Script Properties from Apps Script Editor.
Checks PropertiesService for GEMINI_API_KEY, PROJECT_ID, and REGION (default: 'asia-northeast1'). If configured in PropertiesService, prioritizes those values over code defaults.
Uploads a binary Blob up to 50MB directly to Google Drive using Drive API v3 multipart/form-data. Based on Kanshi Tanaike's multipart upload architecture for Google Apps Script.
Uploads a binary Blob up to 50MB directly to Google Cloud Storage (GCS).
No error handling or recovery guidance. Tools throw generic Error() exceptions with messages but do not categorize errors as retryable, user-fixable, or fatal. No guidance on what the agent should do next.
Destructive operations (cleanupResidualHeadlessResources_, purgeResidualMultimodalTestResources, cleanupAllSampleResources_) lack confirmation or dry-run support. No protection against accidental data loss.