2016-12-01 6 views
1

フォームに入力されたデータをリンクされたスプレッドシートに書き込む際に解析するこのコードがあります。私は最後にフォーム提出時に特定の値に1つのセルを設定する部分もあります。しかし、提出物が入力された行にあった数式または条件付き書式は、クリアされます。たとえば、前述の特定の値を受け取るセルの色分けをしています。しかし、シートの条件付き書式設定セクションを見ると、値の範囲が1つ下にシフトします。つまり、元のI2:I50。投稿後I3:I51Googleフォーム/シートスクリプトは、数式をクリアし、行内の条件付き書式設定を行います。

いくつかの計算を実行する必要がありますが、これも完全にクリアされています。

function onSubmit(e) { 
    Logger.log("onSubmit() called with data:"); 
    Logger.log(e); 

    var category = e.namedValues[ 'Location' ]; 
    Logger.log("category from onSubmit is " + category); 
    Logger.log("range in sheet was:" + e.range.getA1Notation()); 

    var rowNum = e.range.getRow(); 
    Logger.log("row in range in sheet was " + rowNum); 

    var columnNum = 3; 
    Logger.log("last column in range in sheet was " + columnNum); 

    var pieces = category.toString().split(" > "); 
    Logger.log("split up category: "); 
    Logger.log(pieces); 


    var arrayLength = pieces.length; 
    for (var i = 0; i < arrayLength; i++) { 

    var targetColumnNum = columnNum + i; 

    Logger.log("target Column " + targetColumnNum); 
    Logger.log("setting row " + rowNum + " Column " + targetColumnNum + " to value " + pieces[i]); 

    SpreadsheetApp.getActiveSheet().getRange(rowNum, targetColumnNum).setValue(pieces[i]); 

    } 
    targetColumnNum = 9; 
    SpreadsheetApp.getActiveSheet().getRange(rowNum, targetColumnNum).setValue("(1)Open"); 
} 

は、ループのためにその行に他のセルから、それをすべてクリア条件付き書式や数式になるだろうどのように動作するかで何かがあります:ここに私のスクリプトはありますか?

答えて

0

フォームを使用してデータを送信するたびに、最新の行が(最も最近の提出物の下)に挿入され、その新しい行にデータが配置されます。そのため、その行には書式や数式がありません。

この影響を防ぐには、次のような方法があります.1-2は、式を維持する代替方法、3-4書式設定です。

  1. arrayformulaは、列全体の計算を処理します(この方法で論理式を表現できると仮定します)。
  2. setFormulaonSubmitに入力すると、送信されたデータが新しい行に数式が挿入されます。提出された値に基づいてsetBackgroundを使用して、直接スクリプトによって例えば、

    var range = sheet.getRange("A1:Z1"); 
    range.copyTo(newRow, {formatOnly: true}); 
    
  3. セルの書式設定:

  4. は、新しい行へのシートの一番上の行、たとえば、からの条件付き書式をコピーします。

+0

5.シートの最初と最後の行を含む範囲に条件付き書式を設定します。行が挿入されるため、条件付き書式設定を取得する必要があります。少なくともこれは私の経験でしたが、私の場合の条件はすべて、提出されたデータを超えてセルに適用され、フォーマットの条件に合った値に設定されていました。 –