Lydia Meier
Lydia Meier

Reputation: 1

Google Scripts pulling certain data from one tab to another (where column is TRUE)

I am trying to pull data from one spreadsheet tab to another but only when column 37 is true! I tried adding a looping script but it is not working

Basically, the sort tab is sorting viable data from the output sheet and column 37 lets me know if it's viable or not by putting a True in that column. I need to use google scripts for its time triggers or else I would use a query.

function sortData() {

var sourceSpreadsheetID = "1qweQjoTmmXYxc3-6jyB6XhZrfpfl1s7UpP1SnzzAOuA";
var sourceWorksheetName = "Output";
var targetSpreadsheetID = "1qweQjoTmmXYxc3-6jyB6XhZrfpfl1s7UpP1SnzzAOuA";
var targetWorksheetName = "Sort";
var holdingData = [];

  var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID);
  var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName);
  var thisData = thisWorksheet.getDataRange().getValues();
  for (var k = 1; k <= thisData.length; k++) {
     if (thisWorksheet.getRange(k,37).getValue() == 'TRUE') {    
       holdingData.push(thisData[k])
     }
   }
  var toSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetID);
  var toWorksheet = toSpreadsheet.getSheetByName(targetWorksheetName);
  toWorksheet.clearContents();
  toWorksheet.getRange(1, 1, holdingData.length, holdingData[0].length).setValues(holdingData); 
}

Upvotes: 0

Views: 36

Answers (1)

Sergey
Sergey

Reputation: 1131

Try to filter the data array

  holdingData =  thisData .filter(function(dataRow) { return dataRow[37] === true})

instead of this loop

  for (var k = 1; k <= thisData.length; k++) {
     if (thisWorksheet.getRange(k,37).getValue() == 'TRUE') {    
       holdingData.push(thisData[k])
     }
   }

Upvotes: 1

Related Questions