2016-04-16 21 views
1

1分後に機能が終了する時間制限を設定するにはどうすればよいですか?Googleスクリプトの実行時間を1分に制限するにはどうすればよいですか?

状況:毎日5分ごとに実行されるスクリプトがあります。私のスクリプトは毎日の計算時間3時間を超えています。

私はfuncton A(非常に長いので、私はここでそれを獲得したので)を呼び出す関数を作成する必要がありますが、それは最大1分間実行してから終了します。

私は広範囲に検索しましたが、他のすべてのソリューションはループで動作します。しかしタイムアウトの原因となっている私のファンクションは、ループのような機能ではありません。私は機能が正常に完了していない気にしない。

+1

は、あなたの関数のdoesntの使用はまだそのループどのように私たちを説明します長い間続くことができます。私はあなたがループを使用しないことを非常に疑う。あなたはおそらくループを使用します。あなたが必要とするのは、経過時間を確認し、もしあれば停止することだけです。 –

答えて

1

一度に数秒間実行するコードの短いセクションを実行するループが必要です。または「非常に頻繁に」ステータスをチェックするコードを複数行追加する必要があります。

開始時刻を取得するには、使用することができます:

var startTime = Date.now(); //Get milliseconds from a date in past 

をテストとして、あなたは次の関数を実行し、ログを見ることができます。もちろん

function exampleCode() { 

    var startTime = Date.now(); 
    Logger.log(startTime); 

    Utilities.sleep(1000); //Stop the code for 1 second 

    var timeNow = Date.now(); 
    Logger.log(timeNow); 

    var elapsedTime = timeNow - startTime; 
    Logger.log(elapsedTime); 
}; 

、あなたがwouldn startTimeを再割り当てする必要はありません。だからあなたのコードの先頭に置いて、それを再計算しないでください。

それはあなたが時間の経過を確認するための関数を作成することができます60000ミリ秒

if (elapsedTime > 60000) {return}; //Quit after 1 minute 

だ、1分で、コードを停止する:

function elapsedTime() { 
    var timeNow = Date.now();  
    var elapsedTime = timeNow - startTime; 
    if (elapsedTime > 60000) {return 'die'}; //return 'die' if longer than 1 minute 
}; 

if (elapsedTime() === 'die') {return};//Quit after 1 minute 
+0

まずはお返事ありがとうございます!さて、今度は、関数Aを起動してUtilities.sleep(60000)を実行する関数Bを作成する必要があることがわかりました。機能Aがまだ実行中かどうかを確認してください。そうであれば、関数Aを殺します。関数Aでは、関数Aが実行されていれば、まず関数Bを殺してから終了します。私の質問は、実行中に別の関数を殺すようにする方法です。 –

+0

[同時実行モデルとイベントループ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop)と[JavaScript関数呼び出し](http:// www .w3schools.com/js/js_function_invocation.asp) –

+0

ありがとうございました! –

関連する問題