对不起,我的英语很差.

当我通过从另一个工作表或表格复制粘贴将新行插入到列C中时,需要自动显示当前日期.今天()函数不适合,因为需要固定日期.

我创建了一个表格作为示例.我需要的是,当将一行从"例如-从这里复制行"工作表复制到"操作表"时,固定的当前日期出现在列C中.

表格链接:https://docs.google.com/spreadsheets/d/18rF449WUy4DhoSypdt5ZBoJ3K0_k-7aKZozxWcFkkkY/edit?usp=sharing

我是一个完全的新手在编写脚本,我只能复制和轻微修改其他脚本.

function onEdit(e) {
  var row = e.range.getRow();
  var col = e.range.getColumn();

  if(col === 1 && e.source.getActiveSheet().getName() === "Operational Sheet"){
  e.source.getActiveSheet().getRange(row,3).setValue(Utilities.formatDate(new Date(), "GMT+9:00", "dd.MM.yyyy"));
}
}

我有这个脚本,但它只在手动更改单元格时起作用,而不是在复制和粘贴时起作用.

推荐答案

修改要点:

  • 当我看到您提供的Electron 表格时,第一个表格名称是Operational sheet.那不是Operational Sheet.因此,当使用您的show脚本时,我担心col === 1 && e.source.getActiveSheet().getName() === "Operational Sheet"总是返回false.请注意这一点.

  • 在本例中,大约有I have this script, but it only works when changing a cell manually, not when copying and pasting.行,我猜您可能想要复制并粘贴多行.

当这些要点反映在样例脚本中时,下面的脚本如何?

修改后的脚本:

在测试此脚本之前,请再次确认您的工作表名称.

function onEdit(e) {
  var sheetName = "Operational sheet"; // Please confirm your sheet name again.

  var { range } = e;
  var sheet = range.getSheet();
  if (range.columnStart != 1 || sheet.getSheetName() != sheetName) return;
  sheet.getRange(range.rowStart, 3, range.rowEnd - range.rowStart + 1).setValue(Utilities.formatDate(new Date(), "GMT+9:00", "dd.MM.yyyy"));
}
  • 在此示例脚本中,当将多个行从列"A"复制到"操作表"工作表时,值Utilities.formatDate(new Date(), "GMT+9:00", "dd.MM.yyyy")将放入复制行的列"C"中.

注:

  • 如果只想在列"A"和"B"具有复制行中的值时才将日期放到列"C",请测试以下脚本.

    function onEdit(e) {
      var sheetName = "Operational sheet"; // Please confirm your sheet name again.
    
      var { range } = e;
      var sheet = range.getSheet();
      if (range.columnStart != 1 || sheet.getSheetName() != sheetName) return;
      var values = range.getDisplayValues();
      var rowStart = range.rowStart;
      var ranges = values.reduce((ar, r, i) => {
        if (r.every(e => e)) {
          ar.push(`C${i + rowStart}`);
        }
        return ar;
      }, []);
      if (ranges.length == 0) return;
      sheet.getRangeList(ranges).setValue(Utilities.formatDate(new Date(), "GMT+9:00", "dd.MM.yyyy"));
    }
    

参考资料:

Javascript相关问答推荐

鼠标移动时更新画布

为什么在获取回调内设置状态(不会)会导致无限循环?

将数据从strapi提取到next.js,但响应延迟API URL

如何分配类型脚本中具有不同/额外参数的函数类型

在页面上滚动 timeshift 动垂直滚动条

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

如何在 cypress 中使用静态嵌套循环

第三方包不需要NODE_MODULES文件夹就可以工作吗?

覆盖加载器页面避免对页面上的元素进行操作

如何在Java脚本中对列表中的特定元素进行排序?

按什么顺序接收`storage`事件?

未捕获语法错误:Hello World中的令牌无效或意外

Phaser3 preFX addGlow不支持zoom

如何使用画布在另一个内部绘制一个较小但相同的形状,同时保持恒定的边界厚度?

将相关数据组合到两个不同的数组中

在渲染turbo流之后滚动到元素

Next.js无法从外部本地主机获取图像

在SuperBase JS客户端中寻址JSON数据

如何修复错误&语法错误:不能在纯react 项目中JEST引发的模块&之外使用导入语句?

如何检测当前是否没有按下键盘上的键?