Reputation: 1
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
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