Google工作表 - 当单元格等于某个值时,会在相邻单元格

时间:2018-01-05 23:23:04

标签: google-sheets spreadsheet

我有一个销售线索列表,我们希望跟踪线索是否回复了我们,如果是,那么在哪个日期之上,我也希望跟踪他们是否已经转换,如果是,那么在哪个日期

我们在收到回复或转换时手动输入单元格'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

2 个答案:

答案 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"))}