Google表格 - 用于计算下拉选择次数的脚本

问题描述 投票:-1回答:1

我是一般的脚本编写者,并且已经将电子表格放在一起工作。我已经包含了一个指向工作表布局图像的链接,减去了与问题无关的任何内容。

电子表格布局

目前,每次从G列的下拉列表中进行选择时,我都会使用工作表设置来创建时间戳。下拉选项包括:“进行中”,“已提交以供审批”和“已批准”。

我用于时间戳的代码如下:

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
   var r = s.getActiveCell();
   if( r.getColumn() == 7 ) { //checks the column
     var nextCell = r.offset(0, 1);
     var time = new Date();
     time = Utilities.formatDate(time, "America/New_York", "MM/dd/yy HH:mm");
     nextCell.setValue(time);
 };
}

我现在要做的是在第I列和第J列中设置计数器,因此我可以看到每行选择“提交审批”和“已批准”的次数。 所以最后我们每次选择一个新状态时都会得到一个新的时间戳(目前工作正常) - 但是如果选择“提交批准”,那么你会得到时间戳加上提交号码+1(列)一世)。然后在第J栏中的“已批准”相同。

我不知道怎么从这里开始。根据选择,我可以添加到我的脚本以获取其他列中的+ 1?

在此先感谢您的帮助!

google-apps-script google-sheets
1个回答
0
投票

我认为这比你想象的要容易。所以我认为,如果选择“已提交批准”,则第I列的数字将增加1,如果选择“批准”,则第J列的数字会增加1?这只是一个简单的If声明。或者Switch,如果你愿意的话。

我在onEdit函数的末尾添加了一些代码。看看它是否适合你。

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet()
   var r = s.getActiveCell()
   if( r.getColumn() == 7 ) { //checks the column
     var nextCell = r.offset(0, 1)
     var time = new Date()
     time = Utilities.formatDate(time, "America/New_York", "MM/dd/yy HH:mm")
     nextCell.setValue(time)

//-------------------- New code added as below -------------------------------

     var colNum = 0 
     if (r.getValue() == "Submitted to Approval") {
       colNum = 2
     }
     else if (r.getValue() == "Approval") {
       colNum = 3
     }
     if (colNum > 0) {
       var editCell = r.offset(0,colNum) // gets the offset selected by r
       var number = editCell.getValue() // gets the value, increase it by 1 and set it back
       number = number + 1
       editCell.setValue(number)
       } // colnum > 0
     } //r.getColumn() == 7
   } // onEdit

当然,colNum是基于工作表的列进行硬编码的,不建议这样做。但那是另一回事......

还有一个问题是,当G已经处于“已批准”状态,并且您再次选择“已批准”时,onEdit将不会触发,因为google sheet决定您没有“更改”任何内容,因此“已批准”列的数量会保持不变。我不知道你的表单是否构建得像这样,所以我只是指出它。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.