gpt4 book ai didi

javascript - 在编辑功能中按值定位

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:23:29 25 4
gpt4 key购买 nike

我正在创建一个工作表,每次单元格值更改为“x”时,我都需要一个时间戳。时间戳需要是“x”右侧的一个单元格。我有多个列,您可以在其中键入 x..

我已经尝试过使用 Headers 了,但它似乎不起作用?可能是因为您可以键入“x”的地方不在标题下方?任何人都可以帮助我或建议其他方法吗?

function onEdit(e) {
var sheet = e.source.getActiveSheet();
if (sheet.getName() == "Mandagstræning") {
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf("Tid") + 1;
var orderCol = headers[0].indexOf("dato") + 1;
if (dateCol = "x" && rowIndex > 1 && editColumn == orderCol) {
sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "MM-dd-yyyy HH.mm.ss"));
}
}
}

现在,当我将一个值更改为 x 时,我没有得到任何结果。我的标题在工作表的第一行。

这是我工作表的示例。 https://docs.google.com/spreadsheets/d/11Rtbqs08Xw5VxA6DRZQ6PnQtsOPZJbV4YGcLfpkEuvA/edit?usp=sharing

最佳答案

这是我想出的。你可以看到它在 demo sheet 中工作.

function onEdit(e) {
var sheet = e.source.getActiveSheet();
if (sheet.getName() == "Mandagstræning") {
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); // changed
var dateCol = headers[0].indexOf("Tid") + 1;
var orderCol = headers[0].indexOf("dato") + 1;
if (sheet.getRange(rowIndex, orderCol).getValue() === "x") { // changed
sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "MM-dd-yyyy HH.mm.ss"));
}
}
}

关键是标记为//changed 的两行。对于第一个,我只想要 1 行范围,所以我将第三个参数的行数添加为 1。对于第二个,您需要获取正确单元格的值并使用比较相等运算符 (===) 而不是赋值运算符 (=)。

编辑:看到更新后的表格

我对您示例表中的代码进行了如下调整:

function onEdit(e) {
var sheet = e.source.getActiveSheet();
if (sheet.getName() == "Mandagstræning") {
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1, editColumn, 1, sheet.getLastColumn()).getValues();
var orderCol = headers[0].indexOf("dato") + editColumn;
var dateCol = headers[0].indexOf("Tid") + editColumn;
if (sheet.getRange(rowIndex, orderCol).getValue() === "x") {
sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "MM-dd-yyyy HH.mm.ss"));
}
}
}

您会注意到我正在寻找从事件单元格的列开始的第一个匹配的顺序和日期列。然后,如果订单列中的值为 x,则将其后第一个匹配日期列中的值设置为当前日期。

关于javascript - 在编辑功能中按值定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57433765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com