【问题标题】:Google Sheets - multiple columns with auto timestamp谷歌表格 - 具有自动时间戳的多列
【发布时间】:2020-08-30 04:31:25
【问题描述】:

我正在创建一张工作表,一旦将工作分配给某人,时间就会自动输入到旁边的单元格中......完成后,时间会自动输入到旁边的单元格中。

我已经附上了我要实现的想法的图片。任何帮助,将不胜感激。谢谢!

【问题讨论】:

  • 感谢您的快速回复@david322 & neven。我对这些东西很陌生,希望有一天能像你们一样了解它。当我输入这些脚本时,我仍然遇到问题。我已将链接附加到我的工作表。在突出显示的行中,您可以看到我正在尝试使用名称和时间戳完成的工作......MY GOOGLE SHEET
  • 这些答案有什么问题?他们确实将时间戳放在相应的单元格中。
  • @jescanellas 对我来说问题是我不知道如何编辑脚本以根据我的需要对其进行自定义。我确信提供的脚本会起作用,当我将它们粘贴到工作表上的脚本区域并运行它时,它给了我一个错误。我是个菜鸟,想向你们学习。我手动编写的第一行上的名称/时间戳只是为了显示我希望下面所有行的样子
  • 你遇到了什么错误?
  • 嗨!我已请求访问您的电子表格,以便尝试发现问题并解决它。你能接受吗?您是否还可以分享或指出您正在使用哪个脚本(如果您使用的是以下答案之一)?

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


【解决方案1】:

我已经尝试使用下面的代码将时间戳添加到 6 和 8。但它在我编辑的每个单元格旁边输入了一个时间戳..

    function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Work Orders" ) { //checks that we're on Sheet1 or not
var r = s.getActiveCell();
if( r.getColumn() == 6, 8 ) { //checks that the cell being edited is in column A
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) //checks if the adjacent cell is empty or not?
nextCell.setValue(new Date());
}
}
}

【讨论】:

    【解决方案2】:

    您可以使用 SpreadsheetApp 的 onEdit 触发器。基本上,每次编辑单元格时,onEdit 函数都会运行并传递事件。然后,您可以根据某些标准检查该事件并从那里开始。下面的文档似乎不是最新的,但代码确实对我有用。最后,您可以使用电子表格中的格式设置来选择日期的显示方式。

    function onEdit( event ) {
      const currentRow = event.range.rowStart;
      const currentCol = event.range.columnStart;
      const value = event.value
    
      // if it is in in Column F (6) or Column H (8)
      // you could also check the value here against something
      if( currentCol === 6 || currentCol === 8 ){
         // put the current time in the column next to the current one
         SpreadsheetApp.getRange( currentRow, currentCol + 1).setValue( new Date() )
      }
    
    }
    

    参考这里:onEdit

    【讨论】:

      【解决方案3】:

      如果你设置了触发器,你应该足够 + 调整那里的条件。

      我不知道,你什么时候需要固定日期?

      function insert_timestamp() {
        var s = SpreadsheetApp.getActiveSheet();
        var r = s.getActiveCell();
        var tz = Session.getScriptTimeZone();
        if( r.getColumn() != 0 ) {
          var row = r.getRow();
          var time = new Date();
          time = Utilities.formatDate(time, tz, "dd.MM.yyyy");//"dd.MM.yyyy hh:mm:ss");
          SpreadsheetApp.getActiveSheet().getRange('C' + row.toString()).setValue(time);
        }
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-10
        • 1970-01-01
        • 2021-06-04
        • 1970-01-01
        • 1970-01-01
        • 2017-12-04
        • 1970-01-01
        相关资源
        最近更新 更多