【发布时间】:2014-12-30 05:26:31
【问题描述】:
我正在使用谷歌表格开发一个简单的产品跟踪工具。最上面一行包含一个产品的 1 到 13 个组件。当所有组件都被检查为已到达时,该行会自动将 R 列中的就绪状态更改为就绪。灰色区域用于确定哪些组件不属于某些产品。
这是文件。 https://docs.google.com/spreadsheets/d/18iX6Yp8SgfPaDRJC8L6f4xU1U9Gw8eiBINNFPT9r0Ow/edit?usp=sharing
这没问题,但是我希望在就绪状态更改后显示一个时间戳。
我找到了一段代码并对其进行了编辑以几乎满足我的需要。
function onEdit(event) {
var eventRange = event.range;
if (eventRange.getColumn() == 18) { // 18 == column R
var columnARange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 19,eventRange.getNumRows(), 19); // 19 == column S
var values = columnARange.getValues();
for (var i = 0; i < values.length; i++) {
values[i][0] = new Date();
}
columnARange.setValues(values);
}
}
问题是因为它是一个 OnEdit 函数,如果我想要显示时间戳,我必须手动编辑指定的范围。在示例中,我在 R 列中的“1”上方链接生成时间戳,但是一旦所有空框都被划掉,将单元格更改为“就绪”的公式不会。
有没有办法编辑函数来查看工作表,如果在 R 列中找到“Ready”一词,在 S 列中它旁边会出现一个时间戳?
这个论坛已经帮助了我很多次,为此我感谢大家的贡献。
更新
我在这里找到了这段代码https://productforums.google.com/forum/#!topic/docs/3Iz9y9OSLMk
function emailSendingTrigger() {
var sheet = SpreadsheetApp.getActiveSheet();
if (sheet.getName() == "Sheet Name") {
var activeCell = sheet.getRange("F21");
if (activeCell.getValue() <500) {
emailBALANCETE();
}
}
}
是否可以更改它以查看范围内的每个单元格并在单元格值更改为“就绪”时触发时间戳?
类似
For each cell in range
If value "Ready"
Offset.1 select.cell
set.value New Date()
现在我知道这绝对是不正确的,但也许可以让我对我的目标有所了解。
托蒂
【问题讨论】:
-
您说当检查组件列时,Ready 列已更新——您是否使用脚本来完成此操作?如果是这样,为什么不让更新 Ready 列的脚本也添加时间戳?
-
嗨瑞恩。不,它不是脚本。这也是一种选择,但我也不知道该怎么做。为了澄清,“就绪”消息通过 IF 公式显示。变成“Ready”的单元格包含这个 =IF(COUNTA(E2:Q2)=13;ʺReadyʺ;) 因为一个产品的最大组件数量是 13,当所有盒子都装满时,产品就完成了。
-
做了更多的研究并更新了原始问题
标签: google-apps-script google-sheets