我有一个跟踪电子表格,可以打开一个用户电子表格,并跟踪他们是否对正确的一周做出了回应。用户可以随时注册,因此我有一个if语句,该语句计算了从今天到电子表格创建日期之间的天数。然后将其移动到正确的单元格。然后,我需要另一个if语句,如果最后更新日期少于7天,则显示绿色,如果不是红色,则显示绿色。两个If语句均作为独立代码工作,但是当我尝试下一个它们时,第二个If语句首先运行,将Y或No放入单元格中,然后根据电子表格日期激活正确的单元格!在激活正确的工作表之后,我需要第二个If语句才能运行。
我尝试移动语法。我尝试在每个If语句中创建If语句。问题将是该代码需要在一年的整个52周内自动运行
function trackingSheetUpdate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName('Active Campaign');
var trackSheet = ss.getSheetByName('Tracking')
var now = new Date()
var createDate = sourceSheet.getRange(2, 6).getValue()
var NoOfDays = (now - createDate) / (1000 * 60 * 60 * 24);
var diff = Math.round(NoOfDays)
Logger.log(diff);
var rowData = sourceSheet.getRange(1, 1, sourceSheet.getLastRow(), sourceSheet.getLastColumn()).getValues();
for (var i = 2; i < rowData.length; i++) {
var getUpdate = sourceSheet.getRange(i, 5).getValue();
var openSheet = SpreadsheetApp.openByUrl(getUpdate).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)
if (diff > 1 && diff <= 7) {
trackSheet.getRange(i, 2).activateAsCurrentCell()
} else if (diff > 7 && diff <= 14) {
trackSheet.getRange(i, 3).activateAsCurrentCell()
} else if (diff > 14 && diff <= 21) {
trackSheet.getRange(i, 4).activateAsCurrentCell()
}
if (calcDate <= 7) {
trackSheet.getActiveCell().setValue("Y")
} else {
trackSheet.getActiveCell().setValue("N")
}
我将创建日期设置为8/5/19,因此它应该转到第2列-确实如此。我已将上次更新日期设置为8/5/19,因此应为红色和否,即为(除非将结果放入我留在其中的任何单元格中,然后移至第2列并激活它!) / p>
答案 0 :(得分:0)
请尝试重新格式化您的问题,以便更清楚地说明您期望发生的事情,您想发生的事情以及确切的问题是什么。
据我了解,您正在寻找:
您可以通过几种方法执行此操作。使用现有的diff
变量,而不是检查它是否为> && <=
,您可以使用模和除法,例如
var diff = 7
console.log((diff-(diff%7))/7 + 1)
var diff = 22
console.log((diff-(diff%7))/7 + 1)
var diff = 45
console.log((diff-(diff%7))/7 + 1)
您还可以使用类似getWeek()的名称 函数可计算一年中的星期,并将其补偿为电子表格所需的日期等。
首先,请注意getActiveCell()和getCurrentCell()的工作方式不同。您可以尝试在第二条if语句中使用getCurrentCell(),但是,最好使用第一条if语句来获取范围,并使用第二条if来设置范围,例如
var weeknum = (diff-(diff%7))/7 + 1;
var myCell = trackSheet.getRange(i, weeknum)
calcDate <= 7 ? myCell.setValue("Y") : myCell.setValue("N")