我是一般的脚本编写者,并且已经将电子表格放在一起工作。我已经包含了一个指向工作表布局图像的链接,减去了与问题无关的任何内容。
电子表格布局
目前,每次从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?
在此先感谢您的帮助!
我认为这比你想象的要容易。所以我认为,如果选择“已提交批准”,则第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决定您没有“更改”任何内容,因此“已批准”列的数量会保持不变。我不知道你的表单是否构建得像这样,所以我只是指出它。