我有一个销售线索列表,我们希望跟踪线索是否回复了我们,如果是,那么在哪个日期之上,我也希望跟踪他们是否已经转换,如果是,那么在哪个日期
我们在收到回复或转换时手动输入单元格'Y',但我希望旁边的单元格自动填充我们输入'Y'时的日期。
到目前为止,我已经能够找到一个可以在工作表上为一列执行此操作的脚本,但实际上我正在尝试创建一个脚本,可以在多个选项卡上为多个列执行此操作。
希望这个屏幕截图有助于解释;
https://screenshot.click/05_20-mfohy-1jfi2.jpg
我发现这个脚本适用于一列,但我很难使它适用于两列
function onEdit(event){
var ColAF = 32; // Column Number of "AH"
var changedRange = event.source.getActiveRange();
if (changedRange.getColumn() == ColAF) {
// An edit has occurred in Column AF
var state = changedRange.getValue();
var adjacent = event.source.getActiveSheet().getRange(changedRange.getRow(),ColAF+1);
var timestamp = new Date(); // Get the current time
// depending on the selected value
switch (state) {
case "y":
// Write timestamp into adjacent cell
adjacent.setValue(timestamp);
break;
case "Y":
// Write timestamp into adjacent cell
adjacent.setValue(timestamp);
break;
default:
adjacent.setValue("");
break
}
}
以下是示例的链接:https://docs.google.com/spreadsheets/d/1NB-a2Cgm1hchuEoQc3zCBtiaOdqsKHnQF41v5vYfkX4/edit?usp=sharing
答案 0 :(得分:0)
在我将32
更改为4
的示例中,它可以正常运行。你的var名为colAF
,它是索引32,但你的评论是AH
,它是索引34。
var ColAF = 32; // Column Number of "AH"
仔细检查范围。
尝试添加一些Logging以查看正在发生的事情。
function onEdit(event){
var ColAF = 4; // Column Number of "AH"
var changedRange = event.source.getActiveRange();
Logger.log(changedRange.getColumn());
Logger.log(changedRange.getColumn() == ColAF);
if (changedRange.getColumn() == ColAF) {
编辑类似上面的代码,保存代码然后进行更改。要查看日志,请转到“查看” - >调试器中的“Logs”。
在上面,日志的输出是
[18-01-08 19:51:42:815 ICT] 4.0
[18-01-08 19:51:42:816 ICT] true
如果无法解决问题,请粘贴您的实际代码。
答案 1 :(得分:0)
很抱歉,32/34是从我正在使用的真实纸张中取出的,但为了这个目的,它应该是1& 3.无论如何,我终于能够弄明白了,它比我原先以为我会粘贴下面的答案简单得多;
function onEdit(e) {
if ([1,3].indexOf(e.range.columnStart) == -1 || ['y','Y'].indexOf(e.value) == -1) return;
e.range.offset(0, 1)
.setValue(Utilities.formatDate(new Date(), "GMT-5", "MM-dd-yyyy"))}