当前位置: 首页 > 知识库问答 >
问题:

在2个If语句中追加行

商天逸
2023-03-14

我有以下问题。当满足特定条件时,我希望将值写入一行。整个事情的工作目前也在这里我的代码:

function onEdit(e) {
  addTimestamp(e);
}

function addTimestamp(e) {
  
  var ui = SpreadsheetApp.getUi();
  var ws = "Tabellenblatt2"; 
  var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt1");
  var range = targetSheet.getRange(3, 2, 1000,1); 
  var currentDate = new Date();
  
  if(e.source.getActiveSheet().getName() === ws && range != "") {
    var cell = SpreadsheetApp.getActiveSheet().getActiveCell();
    var val = cell.getValue();

    if (val != "") {
      let rowToAdd = [val, "", currentDate, ""]
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt1").appendRow(rowToAdd);
      ui.alert("Test2");
    } 

    if (val === ""){
      let rowToAdd = ["", "", "", currentDate]
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt1").appendRow(rowToAdd);
      ui.alert("Test3");
    }
  }
}

我希望第二个If语句将值放在与第一个If语句相同的行中,这样就不会创建新行。有人知道吗?

共有1个答案

刁茂才
2023-03-14

从你下面的答复中,,

我真的不知道如何将线路连接到它,以便它可以与多条线路一起工作。整个系统应该被用作时间跟踪器。第一个if语句应设置开始时间,第二个if语句应设置“结束时间”

主要任务是测量时间。如果有人输入一个单元格,那么这个时间(开始时间)应该用第一个if语句输入到另一个工作表中。如果他再次“取消订阅”,即清空单元格,当前日期也应写在开始时间的旁边。

在本例中,我认为当前的最后一行可能是要放置[“”,“”,“”,currentDate]值的单元格。如果我的理解是正确的,那么下面的修改如何?

请修改addTimestamp,如下所示。

function addTimestamp(e) {
  var ui = SpreadsheetApp.getUi();
  var ws = "Tabellenblatt2";
  var ss = e.source;
  var targetSheet = ss.getSheetByName("Tabellenblatt1");
  var range = targetSheet.getRange(3, 2, 1000, 1);
  var currentDate = new Date();
  if (e.source.getActiveSheet().getName() === ws && range != "") {
    var cell = ss.getActiveCell();
    var val = cell.getValue();
    if (val != "") {
      let rowToAdd = [val, "", currentDate, ""]
      ss.getSheetByName("Tabellenblatt1").appendRow(rowToAdd);
      ui.alert("Test2");
    } else {
      var sheet = ss.getSheetByName("Tabellenblatt1");
      sheet.getRange(sheet.getLastRow(), 4).setValue(currentDate);
      ui.alert("Test3");
    }
  }
}
  • 作为额外的修改点,可以使用事件对象SpreadsheetApp.getActiveSpreadSheetA()替换为e.source
  • getLastRow()
 类似资料:
  • 2. if/else语句 if语句还可以带一个else子句(Clause),例如: if (x % 2 == 0) printf("x is even.\n"); else printf("x is odd.\n"); 这里的%是取模(Modulo)运算符,x%2表示x除以2所得的余数(Remainder),C语言规定%运算符的两个操作数必须是整型的。两个正数相除取余数很好理解,如果操作数中有

  •  if 语句,就是类似于「如果○○的话,做●●」,根据条件判断脚本的一部分是否执行的语法。  语法如下: if(expression) 语句或语句块 else 语句或语句块  第一个“语句或语句块”是当 expression 表达式的结果为真时执行的部分,第二个“语句或语句块”则是结果为假时执行的部分。如果不需要 else 以后的部分,可以省略。 例: if(a==b) inform("a和b相等

  • 我有两个嵌套的IF语句。。 <代码>=如果($B3=$K$3,日期(年(D3)$L$3,月(D3)$M$3,天(D3)),如果($B3=$K$4,日期(年(D3)$L$4,月(D3)$M$4,天(D3)),如果($B3=$K$5,日期(年(D3)$L$5,月(D3)$M$5,天(D3)),如果($B3=$K$6,日期(年(D3)$L$6,月(D3)$M$6,天(D3)),“”) 和

  • 我只允许在我的主菜单中有4个选项,我创建了5个。我不知道如何把最后2个输出语句放在一起,这样一个语句就可以从另一个语句的内部调用。因此它们可以使用相同的菜单选项。 选项3和选项4需要以某种方式在彼此内部,这样我就可以显示输入的所有联系人的名称,然后提示用户选择联系人ID,以显示该联系人的其余详细信息。 以下是更改前的输出结果和更改后的输出结果。 这是我之前的改变,这是好的,除了我在主菜单中有太多的

  • 有可能做如下事情吗: 或者: 我知道用很多if-else语句也可以实现同样的目标,但如果它像上面那样工作,看起来会更干净。

  • 行动时刻 - 在unlang中使用if语句 if语句本身并不复杂。 它具有以下格式: if(condition){ ... } 由于其许多可能性,条件部分可能变得复杂。 使用if语句获取返回码 我们现在将查看模块的返回代码,并使用此代码与指定的条件进行比较。 FreeRADIUS中的每个模块都需要在调用时返回代码。 随后可以将此代码的值用作if语句中的条件检查。 使用if语句授权用户 如