Summary
- Attempting to stop code that calls
SpreadsheetApp.getUi() on a mobile device.
- The script shows an alert via
message.alert(...) which times out on mobile, causing a timeout error.
- Mobile devices cannot display UI alerts, so the call blocks until timeout.
Root Cause
SpreadsheetApp.getUi() returns a UI object only in a desktop/web context; on mobile it is unavailable or non‑functional.
- The subsequent
.alert() call waits indefinitely, leading to a script timeout.
- Synchronous UI calls block execution, and mobile clients do not provide a UI thread.
Why This Happens in Real Systems
- Google Apps Script runs on Google’s servers; UI interactions require a browser UI context.
- Mobile access uses a lightweight web view that does not support the full UI service.
- The default execution timeout is 30 seconds; waiting for a UI that never appears triggers a timeout.
Real-World Impact
- Users encounter timeout errors or script failures when trying to enter player data.
- Business processes are halted, causing delays and potential data inconsistency.
- Support tickets increase, and user frustration rises.
- May lead to incorrect scores if the script aborts mid‑execution.
Example or Code (if necessary and relevant)
try {
if (editedCell == 'F2') {
ss.uncheck();
var message = SpreadsheetApp.getUi(); // may be undefined on mobile
message.alert('Enter the number of players...'); // blocks and times out
return;
}
} catch (error) {
ss.uncheck();
return;
}
How Senior Engineers Fix It
- Guard UI calls with a check:
if (SpreadsheetApp.getUi()) { /* show alert */ } or use toast as fallback.
- Show a toast on mobile:
SpreadsheetApp.getActiveSpreadsheet().toast('Enter player count');.
- Move UI logic to a web app that runs in a full browser context, not in the mobile spreadsheet UI.
- Add explicit timeout handling or user‑friendly messages instead of blocking alerts.
Why Juniors Miss It
- Assume
getUi() works everywhere because it works in the script editor.
- Fail to test on mobile or different client contexts.
- Overlook that UI services are tied to the web UI, not the spreadsheet view.
- Lack experience spotting platform‑specific behavior in Google Apps Script.