estherelle
estherelle

Reputation: 29

Google Apps Scripts ReferenceError: "setTimeout" is not defined

Is there a way for me to delay a function call in Google Apps Scripts? I'm currently testing for smaller time frames, but I would eventually like to have a 72-hour wait period between processing data and calling moveRows.

I was trying to achieve this by making this Javascript function call:

setTimeout(function() { moveRows(arrayOfRows); }, 3000);

I also tried doing it with a trigger but my function never got called.

ScriptApp.newTrigger('moveRows(arrayofRows)')
.timeBased()
.everyMinutes(1)
.create()

What am I doing wrong?

Upvotes: 1

Views: 3155

Answers (2)

gaspar
gaspar

Reputation: 1078

As others have pointed out, setTimeout cannot be used in GAS. Instead, you can use the function [Utilities.sleep()][1] (see this answer).

Upvotes: 2

Anton Dementiev
Anton Dementiev

Reputation: 5716

setTimeout() belongs to the 'window' object that is not present in GAS. Remember, the code is compiled on Google servers, not in your browser, so you don't have access to DOM in this environment. Similarly, you can't reference 'document' or other DOM objects. The only place where it's possible is client-side HTML that HtmlService creates and sends to your browser for rendering.

You can only pass function name as parameter to the newTrigger() method. You are passing the parameter, which is why it doesn't work.

Upvotes: 0

Related Questions