2017-01-11 9 views
0

タイムリーなトリガに基づいて自動リフレッシュIMPORTXML機能を持つGoogleシートを持っていて、「警告」マークが付いた行を自動的にメールで通知するスクリプトを作成しようとしています。 HELP "メッセージタイプ。onChangeトリガが期待どおりに動作しない

私が見つけたいくつかの例に基づいてこのスクリプトをコンパイルしました。私はそれをテストし、onEditのインストール可能なトリガーで手動で入力したデータでうまく動作しますが、私のテスト(そして研究に基づいて)から、IMPORTXMLにスクリプトをトリガさせるためにonChangeトリガを使用する必要があります。

しかし、スクリプトをonChangeインストール可能なトリガーに設定すると、スクリプトはIMPORTXMLデータを読み込むと自動的に実行されないように見えるか、手動でシートに入力するように見えません。

私はGood Apps Scriptのいくつかの制限を打つのですか?これは私がユースケースについてのご説明から理解何をすることによって(とJavaScript)

function helpAlertEmail(e) 
{ 
    if (e.range.columnStart !== 5 || e.value !== 'HELP' && e.value !== 'HELP-CANCEL') return; 
    var ss = e.source.getActiveSheet() 
    var details = ss.getRange(e.range.rowStart, 1, 1,11).getValues()[0]; 
    var headers = ss.getRange(1, 1, 1, 11).getValues()[0]; 
    var subject = "SPOT BEACON ALERT: " + details[2] + " Sent a " + details[4] + " Message at " + details[9]; 
    var body = "SPOT Beacon " + details[2] + " (" + details[1] + ") Sent a " + details[4] + " Message at " + details[9] + "\n\n"; 
    var email = "[email protected]"; 
    var cols = [0, 4, 5, 6, 9, 10]; 

    for (var i = 0; i < details.length; i++) 
    { 
    if (cols.indexOf(i) === -1) continue; 
    body += headers[i] + ": " + details[i] + "\n" 
    } 

    body += "\n\n\n Please do not respond to this email as it is automatically generated by an account that is not checked."; 
    MailApp.sendEmail(email, subject, body, {noReply:true}); 
} 

答えて

1

を使用して、私の最初の時間ですが、私はあなたがこれを知っていただきたいと思います:

1)をのonEdit - 指定しますスプレッドシートの編集時に発生するトリガーです。

2)onChange - スプレッドシートのコンテンツまたは構造が変更されたときに起動するトリガーを指定します。

これらはGoogleが規定した条件です。

は、今では私たちに教えてくれないものです:

1)編集

は今、あなたはあなたが手動にも試みたが、トリガーが起動していないと述べたマニュアルにする必要があります。その可能性のある理由は、どこかからデータをコピーし、それを必要な場所に貼り付けた可能性があるということです。だから、あなたはその場合にトリガーが発射されることは期待できません。

2)編集は自動化の形式ではありません(スプレッドシートの式を使用するか、スクリプトを使用して行うことはできません)。この場合でも、トリガは起動しません。

したがって、あなたが直面しているのは、というGoogleの制限の結果ではなく、です。悲しいことに、それはそれです。

で何をする必要があります、あなたは、達成された、のonChangeのonEditのトリガーを除き、何か他のものを使用しようとしているものについては移動するための別の方法を考えます。

関連する問題