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
Logs 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
Logs how many installable triggers you already have in this project, so you can check 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
Looks in getProjectTriggers() for a trigger with a specific handler function and a spreadsheet source. Run this check 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
Open method details 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