2016-11-01 6 views
0

私は、行A23:E23に4つのセルの値をとり、その行に特定の(H3)セルが含まれている場合、その値を別のシートに複製するスクリプトを作成しましたテキスト "Live"。IFスクリプトを複数の範囲で実行する

スクリプトは、私は簡単に行うことができます理解しており、毎日実行する必要がありますが、それはまたreportDataIFD変数で、値を含む行23以下のすべての行で作業する必要がありますそれぞれ働いている。すなわち

var reportData = reportSheet.getRange("A24...A25...A26:E24...E25...E26").getValues(); 
var lastRow = recordsSheet.getLastRow(); 
var ifd = reportSheet.getRange("H24...H25...H25").getValue(); 
このスクリプトの背後にある考え方は、値が常に更新されている通り、シート1にある値の日々のスナップショットをキャプチャすることです

が、累積の数値として。私は、これらの累積数字の毎日の記録をキャプチャする必要があります。

function appendToRecords() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var reportSheet = ss.getSheetByName("Sheet1"); 
var recordsSheet = ss.getSheetByName("database") 
var reportData = reportSheet.getRange("A23:E23").getValues(); 

var lastRow = recordsSheet.getLastRow(); 
var ifd = reportSheet.getRange("H23").getValue(); 

    if (ifd == "Live"){ 
    recordsSheet.getRange("A2:E2") 
      .setValues(reportData); }} 

誰でもこれを行う方法を提案できますか? https://docs.google.com/spreadsheets/d/1FMlj_9l7Sm0QMKcFpbC4iExbATgPL0jIWoVrvV_Vcfw/edit?usp=sharing

ありがとう:

はここでスクリプトが動作するとサンプルシートです!

答えて

1

あなたは簡単にこのようなあなたのデータベースにすべての「ライブ」行のログを記録することができます完全に働いた

function appendToRecords() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var reportSheet = ss.getSheetByName("Sheet1"); 
    var recordsSheet = ss.getSheetByName("database") 
    var reportData = reportSheet.getRange("A8:H").getValues(); 

    // Get only rows that are "Live" 
    // And only get the first five colums 
    var toWrite = reportData.filter(function(row) { 
    return row[7] === "Live"; 
    }).map(function(row) { 
    return row.splice(0, 5); 
    }); 

    if(!toWrite.length) {return;} // Return if nothing to write 

    recordsSheet 
     .getRange(recordsSheet.getLastRow() + 1, 1, 
       toWrite.length, toWrite[0].length) 
     .setValues(toWrite); 
} 
+0

おかげで、ロビン。 6番目の列の値として日付をマークする方法を提案できますか?私は 'reportData [0] [6] = new Date();'を追加しようとしました。このコードをどこに置くかについて私の頭を浮かべることはできません。 – Bbrads

+0

私は 'var today = new Date()'を関数の先頭に追加します。次に、この 'row.splice(0、5).concat(今日);' –

+0

あなたの英雄のように追加することができます。完璧に動作します! – Bbrads

関連する問題