首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编辑X Colum时自动填充日期( MultiSheet )

编辑X Colum时自动填充日期( MultiSheet )
EN

Stack Overflow用户
提问于 2022-07-25 20:31:34
回答 2查看 73关注 0票数 -1

我对此还比较陌生,我在一家小公司工作,我试图建立一种登记系统来跟踪订单和支票,而自动约会则是一个很大的节省时间的方法。

自动取款机我有一个第一页的工作代码(见下文),它在第一栏编辑第二栏时自动日期,它的工作原理是,我得到的问题是,它在每一页上工作一样,我需要第二和第三页自动日期,当第三栏被编辑,而不是第二列。

我是否可以修改这个脚本,以便它在同一文档上的不同工作表上的工作方式不同?

代码语言:javascript
复制
//------------------------------------------------------------
 //Auto-Populate date in Column A of when column B is updated 
 //Edited 01/13/16 - MK
 //------------------------------------------------------------

function onEdit(event) {
  var eventRange = event.range;
  if (eventRange.getColumn() == 2) { // 2 == column B

    // getRange(row, column, numRows, numColumns)
    var columnXRange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 1, eventRange.getNumRows(), 1);

    var values = columnXRange.getValues();

    for (var i = 0; i < values.length; i++) {
      if (!values[i][0]) {  // If cell isn't empty
       values[i][0] = new Date();
      }
    }
    columnXRange.setValues(values);  
  }
}
EN

回答 2

Stack Overflow用户

发布于 2022-07-26 00:22:51

这样试一试:

代码语言:javascript
复制
function onEdit(e) {
  const sh = e.range.getSheet();
  const sA = ["Sheet1", "Sheet2", "Sheet3"];
  const cA = [2, 3, 3];
  const idx = sA.indexOf(sh.getName());
  if (~idx && e.range.columnStart == cA[idx]) { 
    sh.getRange(e.range.rowStart,1).setValue(new Date());
  }
}
票数 0
EN

Stack Overflow用户

发布于 2022-07-26 03:20:37

建议

据我理解,您希望您的脚本动态地调整您执行编辑的位置:

  • 在第一个工作表上,一旦用户编辑了第2列或B,就会在第1列或A的相邻行上添加时间戳。
  • 在第二张和第三张纸上,一旦用户编辑了第3列或C,就会在第1列或A的相邻行上添加时间戳。

您可以在下面使用更少的代码行来尝试这个实现&您将不再需要编辑脚本来定义每个列,而是只需要编辑工作表本身,以防将来添加多个工作表:

脚本

代码语言:javascript
复制
function onEdit(e) {
  e.source.getActiveSheet().getRange(1, e.range.getColumn()).getValue().includes("*") && e.range.getRow() != 1 ? //Checks if the cell being edited under a column title contains an identifier, which is an asterisk sign (*)
    e.source.getActiveSheet().getRange(e.range.getRow(), 1).setValue(new Date()) : //If true, then the adjacent row on Column A will add a timestamp
    null; //If false, nothing will happen
}

游行示威

  1. 将一个标识符添加到您希望脚本仅生效的每个工作表上的列标题中。

这个示例中使用的标识符是第1行的列标题之后的星号(*)。

  1. 一旦在电子表格文件中保存了示例脚本,下面的行为如下所示:

在编辑包含identifier__,的列标题下的任何行时,会在编辑后的列A上的行旁边添加时间戳,如下所示。否则,将不会在A列中添加任何内容

  1. 根据放置标识符的位置,此脚本还将在电子表格文件下的所有工作表上动态工作,如下所示:

参考文献

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73115034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档