Object reference
Trigger builder
ScriptApp.newTrigger(functionName) returns a TriggerBuilder that configures a timeBased(), forSpreadsheet(), or forForm() trigger before create() saves it.
ScriptApp.TriggerBuilderStart here
Get this object first
Running this setup function installs a persistent daily schedule. It checks for an existing trigger first. To stop it later, open Triggers in Apps Script and delete the writeDailyLog trigger.
function createDailyLogTrigger() {
const alreadyInstalled = ScriptApp.getProjectTriggers().some((trigger) => {
return trigger.getHandlerFunction() === 'writeDailyLog';
});
if (alreadyInstalled) return;
ScriptApp.newTrigger('writeDailyLog')
.timeBased()
.everyDays(1)
.atHour(9)
.create();
}
function writeDailyLog() {
Logger.log('The daily trigger ran.');
} Then use it
Common actions
Choose an action, then open its example only when you need the code.
Check whether the daily trigger is installed
This records only Installed or Not installed. It does not create or delete a trigger.
ScriptApp.TriggerBuilderShow example code
function logDailyTriggerStatus() {
const installed = ScriptApp.getProjectTriggers().some((trigger) => {
return trigger.getHandlerFunction() === 'writeDailyLog';
});
Logger.log(installed ? 'Installed' : 'Not installed');
} Count existing triggers before calling newTrigger
This logs how many installable triggers the current user already owns in this project before creating another one.
ScriptApp.TriggerBuilderScriptApp.TriggerShow example code
function logCurrentTriggerCount() {
const triggers = ScriptApp.getProjectTriggers();
Logger.log('Current-user triggers in project: ' + triggers.length);
} Check whether a spreadsheet trigger is already installed
This inspects getProjectTriggers() for a specific handler and trigger source before you call ScriptApp.newTrigger().forSpreadsheet().
ScriptApp.TriggerBuilderScriptApp.TriggerShow example code
function checkSpreadsheetTriggerInstalled() {
const installed = ScriptApp.getProjectTriggers().some((trigger) => {
return (
trigger.getHandlerFunction() === 'sendStatusEmail' &&
trigger.getTriggerSource() === ScriptApp.TriggerSource.SPREADSHEETS
);
});
Logger.log(installed ? 'Spreadsheet trigger installed' : 'Spreadsheet trigger not installed');
} Technical reference
Exact names and signatures
Generated runtime and signature facts stay separate from the beginner actions above. Open method details only when you need them.
At a glance
- Service
- ScriptApp
- Reference symbol
ScriptApp.TriggerBuilder- Object
TriggerBuilder- Runtime
- From signature data
Methods and signatures
Browse 5 methods
forDocument
- forDocument(document: string): ScriptApp.DocumentTriggerBuilder
- forDocument(document: DocumentApp.Document): ScriptApp.DocumentTriggerBuilder
forForm
- forForm(form: string): ScriptApp.FormTriggerBuilder
- forForm(form: FormApp.Form): ScriptApp.FormTriggerBuilder
forSpreadsheet
- forSpreadsheet(spreadsheet: string): ScriptApp.SpreadsheetTriggerBuilder
- forSpreadsheet(spreadsheet: SpreadsheetApp.Spreadsheet): ScriptApp.SpreadsheetTriggerBuilder
forUserCalendar
- forUserCalendar(emailId: string): ScriptApp.CalendarTriggerBuilder
timeBased
- timeBased(): ScriptApp.ClockTriggerBuilder
Need the whole workflow?
Return to a task guide
Task guides cover setup, permissions, expected results, and troubleshooting as well as object methods.
Browse Triggers tasks