2016-12-15 11 views
0

私はブール値と一致する15分後にブール値BUTに基づいてクリアしたいB1上のスプレッドシートセルA1といくつかのコンテンツにブール値を持っています。15分後にGoogle Apps Scriptを呼び出すにはどうすればよいですか?

以下は、インターネット上での私の研究に基づいて作成したコードです。私が直面してる

function boolean(value) { 
var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1'); 
var value = sheet.getRange('A1:A6').getValue(); 
if (value=="Yes") {trigger15()}; 
} 

function trigger15() { 
    ScriptApp.newTrigger("trigger15") 
    .timeBased() 
    .everyMinutes(15) 
    .create(); 
    {clearRange()} 
} 

function clearRange() { 
    //replace 'Sheet1' with your actual sheet name 
    var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1'); 
    sheet.getRange('B1:B6').clearContent(); 
} 

問題:代わりに条件マッチングの15分後に作業の

  • は、trigger15スクリプトは最終的にあまりにも多くのトリガー」のエラーを示し、多くの「トリガー15分」を作成します"
  • B1セルが10秒以内に消去され、A1が"はい "でなくても
  • さらにもう1つ、私は苦労しています:このルールを適用するにはどうすればよいですか? A2 & B2、A3 & B3 ...そうです。

スクリプトを完全に動作させるには、スクリプトに対してどのような修正を行う必要がありますか?

最近私はアプリスクリプトを使い始めましたので、非常に基本的なことを知っています。さらなる掘り起こしのためにいくつかのリソースを提供することは役に立ちます。代わりに、条件マッチングの15分後に作業の

答えて

0

は、trigger15スクリプトは、最終的には「あまりにも多くのトリガー」あなたのコードで

の誤差を示し、多くの「トリガー15分」を作成

function trigger15() { 
    ScriptApp.newTrigger("trigger15") 
    .timeBased() 
    .everyMinutes(15) 
    .create(); 
    {clearRange()} 
    } 

同じトリガービルディング関数を(再帰的に)15分ごとに実行するためのトリガーを作成しています。

newTrigger()メソッドは、パラメータとしてfunctionNameを取るので、あなたのトリガ作成機能は次のようになります。

function trigger15() { 
    ScriptApp.newTrigger('clearRange') 
      .timeBased() 
      .everyMinutes(minutes) 
      .create(); 
} 

B1細胞は、10秒以内に消去されますと、A1が「はい」

ない場合であっても

trigger15関数を呼び出すたびに(現在書いているように)、B1:B6というセルの内容が無条件にクリアされます。その関数の最後の行を参照してください - {clearRange()}

もう一つ、私がやるのに苦労しています:どのように私はA2 & B2、A3 & B3のような更なる行にこのルールを適用するには、単一のアプリケーションスクリプトを使用することができます...そうです。私の意見で

は、最善のアプローチは、単一の細胞を扱うcustom formulaを作成し、あなたがそれを必要とする方の細胞でスプレッドシート(​​フロントエンド)にそれを使用することです。これは、スプレッドシート上で盲目的に動作する1つのApps Scriptを作成するよりもはるかに拡張性が高く、オーバーヘッドが少ない可能性があります。

+0

ありがとうございます。セル内のsetValueにカスタム関数を書くことは可能ですか?たとえば:私はカスタム関数を作成し、それをA1で実行しました。したがって、他のセル(この場合はA1)でカスタム関数を実行してセルB1に値を設定することは可能ですか? –

+0

私が達成したいもう一つのことは、セルから値を記録し、その値を別のセルに設定することです。カスタム関数では、配列の結果を除いて別のセルに変更を加えることが制限されているため、このことはカスタム関数では不可能です。アプリケーションスクリプトを使用してシートのすべての行に値を記録して設定するにはどうすればよいですか? –

関連する問題