【问题标题】:More than 1 timestamp超过 1 个时间戳
【发布时间】:2021-04-29 18:09:07
【问题描述】:

我正在尝试创建超过 1 个时间戳,但是当您尝试复制一个函数时,我不能,因为 'tf' 已经在使用中。我收到此错误:

语法错误:SyntaxError: Identifier 'tf' has been declared line: 16 file: START TIMESTAMP.gs

这是我目前所拥有的:

function onEdit(e) {
  addTimestamp(e)
}

function addTimestamp(e) {
  const activeSheet = e.source.getActiveSheet()
  const modifiedCell = e.range


  const tf = activeSheet.createTextFinder("Start")
  tf.matchEntireCell(true)
  const cellStart = tf.findNext()
  const row = cellStart.getRow()
  const col = cellStart.getColumn()


  // guard statements
  if(!activeSheet.getSheetName().toString().startsWith("TASKS")) return
  if(!(modifiedCell.getColumn() === col && modifiedCell.getRow() > row)) return




  if(e.value === "TRUE"){
    modifiedCell.offset(0,1).setValue(new Date())
  } else {
    modifiedCell.offset(0,1).clearContent()
  }




  //SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell().offset()

}

【问题讨论】:

    标签: sql google-apps-script google-sheets timestamp


    【解决方案1】:

    const 仅用于在声明时设置的变量。它很方便,因为它可以防止你犯你不打算犯的错误。如果您要更改值,请使用 var 或 let。

    function onEdit(e) {
      const sh = e.range.getSheet();
      if(sh.getName().startsWith("TASKS")) return;
      let tf = sh.createTextFinder("Start").matchEntireCell(true);
      const cellStart = tf.findNext();
      const row = cellStart.getRow();
      const col = cellStart.getColumn();
      if(!(e.range.columnStart == col && e.range.rowStart > row)) return;
      if(e.value == "TRUE"){
        e.range.offset(0,1).setValue(new Date())
      } else {
        e.range.offset(0,1).clearContent()
      }
    }
    

    添加更多时间戳:

    function onEdit(e) {
      const tsA=[{row:0,col:1}];//add more objects to get more timestamps
      const sh = e.range.getSheet();
      if(sh.getName().startsWith("TASKS")) return;
      let tf = sh.createTextFinder("Start").matchEntireCell(true);
      const cellStart = tf.findNext();
      const row = cellStart.getRow();
      const col = cellStart.getColumn();
      if(!(e.range.columnStart == col && e.range.rowStart > row)) return;
      if(e.value == "TRUE"){
        let dt = new Date();
        tsA.forEach(t=>{
          e.range.offset(t.row,t.col).setValue(dt)
        });
      } else {
        tsA.forEach(t=>{
          e.range.offset(t.row,t.col).clearContent();
        });
      }
    }
    

    【讨论】:

    • 我如何添加第二个和第三个时间戳?一个用于名为 End 的列,另一个用于 Reviewed。
    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 2017-12-31
    • 2017-08-27
    • 1970-01-01
    • 2015-09-19
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多