Automating Tasks with Google Apps Script: Creating a Time-Driven Trigger

Google Apps Script allows you to automate tasks within your Google Workspace applications. One powerful feature is the ability to create time-driven triggers that execute functions at specific times or intervals. In this blog post, we will walk through an exercise to create a time-driven trigger that runs a specific function daily at a given time. Additionally, we will explore the different types of triggers available in Apps Script and how to set them up.


Before we start, ensure you have:

  • A Google account
  • Basic understanding of JavaScript

Step 1: Writing the Function to Automate

  1. Open the Apps Script Editor:
    • In your Google Sheets, Docs, or any other Google app, go to Extensions > Apps Script to open the script editor.
  2. Create a New Script:
    • Replace any code in the script editor with the following example function that you want to run daily. In this example, we will write a function that logs a message.

function dailyTask() {

  Logger.log(“This function runs daily at the specified time.”);


Step 2: Creating a Time-Driven Trigger

  1. Set Up the Trigger in Apps Script:
    • Add the following function to create a time-driven trigger that runs the dailyTask function daily at a given time.

function createTimeDrivenTrigger() {



    .atHour(9) // Change this to the hour you want the trigger to run (0-23)




  1. Run the Trigger Creation Function:
    • Save your script by clicking the floppy disk icon or pressing Ctrl+S (Windows) or Cmd+S (Mac).
    • Click on the Run button (the play icon) to execute the createTimeDrivenTrigger function.
    • You will need to authorize the script the first time you run it. Click on Review Permissions and follow the steps to grant the necessary permissions.

Step 3: Checking and Managing Triggers

  1. View and Manage Triggers:
    • In the Apps Script editor, go to Triggers > Current project’s triggers.
    • You will see the dailyTask function listed with a time-driven trigger set to run daily at the specified hour.
  2. Edit or Delete Triggers:
    • You can edit or delete triggers from this interface. To delete a trigger, click the X icon next to the trigger.

Different Types of Triggers in Apps Script

  1. Time-Driven Triggers:
    • Types: Hourly, daily, weekly, monthly, or at a specific date and time.
    • Use Case: Automate tasks that need to run at regular intervals (e.g., daily reports).
  2. Spreadsheet Triggers:
    • Types: onOpen, onEdit, onChange, onFormSubmit.
    • Use Case: Automate tasks based on specific actions within a Google Sheet (e.g., sending an email when a form is submitted).
  3. Document Triggers:
    • Types: onOpen, onEdit.
    • Use Case: Automate tasks when a Google Doc is opened or edited (e.g., updating a table of contents).
  4. Form Triggers:
    • Types: onOpen, onSubmit.
    • Use Case: Automate tasks when a Google Form is opened or submitted (e.g., sending a confirmation email).
  5. Calendar Triggers:
    • Types: onEventUpdate.
    • Use Case: Automate tasks based on calendar events (e.g., sending reminders).

Setting Up Triggers

  1. Manually Creating Triggers:
    • You can manually create triggers from the Apps Script editor by going to Triggers > Current project’s triggers > Add Trigger.
    • Select the function to trigger, choose the event source (time-driven, spreadsheet, form, etc.), and configure the trigger settings.
  2. Programmatically Creating Triggers:
    • As demonstrated in the exercise, you can create triggers programmatically within your script using ScriptApp.newTrigger(), ScriptApp.newTrigger(‘functionName’), followed by the trigger type and configuration.


With this exercise, you’ve learned how to create a time-driven trigger in Google Apps Script to run a function daily at a specified time. Triggers are a powerful feature that allows you to automate tasks across Google Workspace applications, enhancing productivity and efficiency. Explore different types of triggers to automate various tasks and integrate seamlessly with your workflow.