基于对另一个IF语句的响应的IF语句条件

时间:2019-05-19 13:00:28

标签: javascript if-statement google-apps-script google-sheets

我有一个跟踪电子表格,可以打开一个用户电子表格,并跟踪他们是否对正确的一周做出了回应。用户可以随时注册,因此我有一个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>

1 个答案:

答案 0 :(得分:0)

请尝试重新格式化您的问题,以便更清楚地说明您期望发生的事情,您想发生的事情以及确切的问题是什么。

据我了解,您正在寻找:

  1. 一种DRY解决方案来获取当前星期。

您可以通过几种方法执行此操作。使用现有的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()的名称  函数可计算一年中的星期,并将其补偿为电子表格所需的日期等。

  1. 您的第一个if语句设置了当前单元格,第二个if语句尝试为活动单元格设置值。这不符合您的要求。

首先,请注意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")
相关问题