В вашем коде, как опубликовано, единственные очевидные проблемы заключаются в том, что ваши конечные setValue()
s находятся в последнем else if
блоке (63-70 дней), и вы пропускаете }
в конце вашего функция. Убедитесь, что это не так в скрипте Google Apps; если это так, вторая наиболее вероятная проблема заключается в том, что информация на вашем листе не отличается от того, что вы думаете. Попробуйте использовать Logger.log()
для значений, которые вы читаете, чтобы убедиться, что они соответствуют вашим ожиданиям.
Дополнительные советы: проверьте Лучшие практики ГАЗ ; особенно при использовании пакетных операций - например, вы получите лучшие результаты, считывая только те значения, которые вам нужны с первого листа в одном getValues()
, а затем итерируя по этим массивам (например, array[i][0]
), вместо использования отдельных звонки на getValue()
в каждом цикле. Я также не уверен, где вы намереваетесь использовать rowData
в этом сценарии - это большая просьба просто проверить длину (по сравнению, например, с одним столбцом).
Я бы также порекомендовал заменить все эти операторы if, например,
var weeknum = (diff-(diff%7))/7 + 1;
var myCell = trackSheet.getRange(i, weeknum)
calcDate <= 7 ? myCell.setValue("Y").setBackground('#9EEF95') : myCell.setValue("N").setBackground('#F65A5A')
Это очень поможет с разборчивостью и позволит избежать ошибок, подобных этой.
В качестве примера того, что я имею в виду, проверьте приведенный ниже код (не проверено; могут потребоваться небольшие корректировки / исправления:
function trackingSheetUpdate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName('Active Campaign');
var trackSheet = ss.getSheetByName('Tracking');
var now = new Date();
var createDates = sourceSheet.getRange(2, 6, sourceSheet.getLastRow()-1).getValues();
var urls = sourceSheet.getRange(2, 5, sourceSheet.getLastRow()-1).getValues();
for (var i = 2; i < urls.length; i++) {
var NoOfDays = (now - createDates[(i-2)][0]) / (1000 * 60 * 60 * 24);
var diff = Math.round(NoOfDays);
var openSheet = SpreadsheetApp.openByUrl(urls[(i-2)][0]).getSheetByName('Sheet1');
var row = openSheet.getLastRow();
var weeklyUpdate = openSheet.getRange(row, 1).getValue();
var calc = (now - weeklyUpdate) / (1000 * 60 * 60 * 24);
var calcDate = Math.round(calc);
Logger.log(diff)
var weeknum = (diff-(diff%7))/7 + 1;
var myCell = trackSheet.getRange(i, weeknum)
calcDate <= 7 ? myCell.setValue("Y").setBackground('#9EEF95') : myCell.setValue("N").setBackground('#F65A5A')
}
}