返回日期和时间并使用 onEdit 格式化单元格的背景

问题描述 投票:0回答:1

我在物流行业工作,我正在尝试创建一个工作表,以便我的人员可以使用条形码/QR 扫描仪输入跟踪 ID 并让它执行以下操作:

  • 将第一次在单元格中输入值的日期和时间记录到相邻单元格(例如:输入到B1,C1获取日期和时间,然后如果B1获取另一个值,C1不变。输入到任何其他列除非指定,否则将忽略 F-G 和 J-K)。

  • 如果单元格为空或包含某些字符,则保持单元格为白色/无色(例如:如果未触及/包含“VN”,则为白色;如果有值但没有“VN”,则为红色)。

  • 应用于相同的列,无论当前工作表如何(getActiveSheet?)。

抱歉不够具体,我不是编码员,只是尝试使用 Gsheet 自动执行一些琐碎的任务。我正在考虑 onEdit(),但不知道它是否可以同时格式化和填充,同时减轻工作表的重量。

Tried =ARRAYFORMULA(IFS(B4:B10003="","",C4:C10003<>"",C4:C10003,1*1,Now()))

但它需要参考文献,这大大减慢了工作表的速度。哦,还有条件格式,可爱的工具。

google-sheets google-apps-script google-sheets-formula
1个回答
0
投票

使用 onEdit(e) 和 SetValue 时间戳:

我了解您对目标有 3 个要求。我了解到您是 Stackoverflow 的新手。我试图涵盖您帖子中明确的内容。

1.将某个单元格中第一次输入值的日期和时间记录到相邻单元格上(例如:输入到B1,C1得到日期和时间,然后如果B1得到另一个值,C1不变。输入到任何其他单元格)除非指定,否则将忽略 F-G 和 J-K 列)。

  1. 应用于相同的列,无论当前工作表如何(getActiveSheet?)。

您在这方面走的是正确的道路,这可以通过利用 onEdit() 来实现。我在 Apps 脚本上创建了一个解决方案,供您涵盖这两个内容。

示例代码:

function onEdit(e) {
  var editRow = e.range.getRow();
  var editColumn = e.range.getColumn();
  var tsRange = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(editRow,editColumn+1);
  var tsValue = tsRange.getValue()
  if(editColumn == 2 || editColumn == 6 || editColumn == 10){
    if(tsValue == ""){
   var date = new Date();
    tsRange.setValue(date);}
 }
}

示例输出:

Sample Output

注:

  1. 如果您对 Apps 脚本的经验很少。请阅读此内容 文章了解更多如何在工作表上实现这一点。

  2. 你的第二个要点确实与我想要的第一个问题相差甚远 建议将其作为另一个问题以及附加的 有关您所指的单元格的信息, 颜色会改变,您需要引用的单元格是什么 进行更改。

  3. 由于

    unless specified
    缺乏特异性,我建议删除日期戳更适合您当前的工作流程,这样它仍然会很快,如果您有其他指定的操作,请随时发表评论。

  4. 请确保使用 Google 表格中的内置格式按钮将单元格预先格式化为您所需的格式。

参考资料:

编辑

事件对象

© www.soinside.com 2019 - 2024. All rights reserved.