2016-05-03 19 views
0

スタンドアロンWebアプリケーションスクリプトを毎日14:00〜15:00 GMT + 4:30(Asia/Tehran)の間で実行したい。スプレッドシートを開き、特定のセルをチェックする必要があります。スタンドアロンWebアプリケーション用にインストール可能な時間駆動型トリガーをプログラムで追加する

これまでのところ、私は次のようしている:

function addTrigger() { 
    var ssid = "My SpreadSheet ID"; 
    var ss = SpreadsheetApp.openById(ssid); 
    var everyDay = ScriptApp.newTrigger("checkExitTime") 

この段階では、forSpreadSheet(文字列のキー)と時間ベースの(両方の)使用可能なメソッドの一覧に表示されます。しかし、私がチェーンを張ると、もう一方は利用できなくなります。したがって、forSpreadSheetメソッドを使用すると、timeBased()メソッドが消滅し、表示される唯一のメソッドはcreate()onChange()、onEdit()、onOpen()、onFormSubmit()です。どのように私は両方を持つことができますか?

var everyDay = ScriptApp.newTrigger("checkExitTime") 
      .timeBased().everyDays(1).atHour(14).inTimezone("Asia/Tehran") 
      .forSpreadSheet(ss) 
      .create() 

答えて

0

ScriptApp.newTriggerはさらに分類がトリガの異なる型にトリガTriggerBuilderクラスを返します。

私のようなものを持っていると思います。だからScriptApp.newTrigger("yourFn").timeBaesd()を呼び出すと、ClockTriggerBuilderクラスが返されます。そのメソッドは、メソッドチェーンのための同じClockTriggerBuilderクラスを返しますが、そのクラスに残ります。

別の種類のトリガーにアクセスするには、.forSpreadSheet(ss)は、SpreadsheetTriggerBuilderクラスを返します。ビルダーメソッドはメソッドチェーンの同じクラスを返します。

あなたのコードで

.forSpreadSheetを使用して

var everyDay = ScriptApp.newTrigger("checkExitTime") 
     .timeBased().everyDays(1).atHour(14).inTimezone("Asia/Tehran") 
     .forSpreadSheet(ss) 
     .create(); 

は不要であり、あなたは彼らがオブジェクトに利用できないようではないチェーン2つの方法が返されることができますので、どんな意味がありません。

時間ベースのトリガが実行されているときにスプレッドシートを操作することを考えたと思います。あなたは時間駆動トリガを作成し、そのハンドラ関数であなたのタスクを実行する必要があります。

var everyDay = ScriptApp.newTrigger("checkExitTime") 
     .timeBased().everyDays(1).atHour(14).inTimezone("Asia/Tehran") 
     .create(); 

//// Handler function of time driven trigger 
function checkExitTime(e){ 
    var ssid = "My SpreadSheet ID"; 
    var ss = SpreadsheetApp.openById(ssid); 
    //// do your task 
} 

をしかしあなたはまた、スプレッドシートがonOpen()onEdit()などのように、あなたは"this"のようにそれらを個別に開始する必要がトリガーしたい場合。

// Creates an edit trigger for a spreadsheet identified by ID. 
var ssid = "My SpreadSheet ID"; 
ScriptApp.newTrigger('myFunction') 
    .forSpreadsheet(ssid) 
    .onEdit() 
    .create(); 

// your onEdit event handler 
function myFunction(event){ 
     // your code.. 
} 

myFunctionは、スプレッドシートで編集イベントが発生すると実行されます。

+0

申し訳ありませんが、今、私の愚か者が見えます!私はそれを試し、結果をここに投稿します。明るい答えをありがとう。 –

+0

それは素晴らしい仲間です、あなたは確かにここで結果を共有することができます。問題が解決したと思われる場合は、あなたのポストで最も役立つ回答をマークして、質問を閉じることができます。ありがとうございます。 – MShoaib91

+0

それは美しく働いた。私は今、それらの電子メールを定期的に取得しています。感謝万円。 –

関連する問題