[英]My script is very slow while execution. Please tell me what makes this script to provide the result very slow
Purpose of this script is when i populate Column B cells, Today's date should be populated in column A (only if it is empty).此脚本的目的是当我填充 B 列单元格时,今天的日期应填充在 A 列中(仅当它为空时)。 using FOR loop for inserting multiple dates when changing multiples column B cells.
使用 FOR 循环在更改多个列 B 单元格时插入多个日期。 I could not bale to identify what makes this script slower.
我无法确定是什么让这个脚本变慢了。 it takes 10 to 15 secs for auto date population.
自动日期填充需要 10 到 15 秒。 please tweak this to be faster..
请调整它以更快..
//------------------------------------------------------------
//Auto-Populate date in Column A of when column B is updated
//------------------------------------------------------------
function onEdit(event) {
var eventRange = event.range;
if (eventRange.getColumn() == 2) { // 2 == column B
// getRange(row, column, numRows, numColumns)
var columnXRange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 1, eventRange.getNumRows(), 1);
var values = columnXRange.getValues();
if (values.length == 1) { // if active cell is 1, quickly insert date without loop
values[0][0] = new Date();
}
else {
for (var i = 0; i < values.length; i++) {
if (!values[i][0]) { // If cell isn't empty
values[i][0] = new Date();
//values.clearContent();
}
}
}
columnXRange.setValues(values);
}
}
function onEdit(e) {
e.source.toast('Entry');
if (e.range.columnStart == 2) {
var columnXRange = e.range.getSheet().getRange(e.range.rowStart,1,e.range.rowEnd-e.range.rowStart + 1,1);
var values = columnXRange.getValues();
if (values.length==1) {
values[0][0]=new Date();
}else {
for (var i=0;i<values.length;i++) {
if (!values[i][0]) {
values[i][0] = new Date();
}
}
}
columnXRange.setValues(values);
}
}
Since you don't need all the date information being different at each cell, then I would call the Date function once, and store it in a variable for use later.由于您不需要每个单元格的所有日期信息都不同,因此我将调用一次 Date 函数,并将其存储在一个变量中以备后用。 This should speed up your code.
这应该会加快您的代码速度。
//------------------------------------------------------------
//Auto-Populate date in Column A of when column B is updated
//------------------------------------------------------------
function onEdit(event) {
var eventRange = event.range;
if (eventRange.getColumn() == 2) { // 2 == column B
// getRange(row, column, numRows, numColumns)
var columnXRange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 1, eventRange.getNumRows(), 1);
var values = columnXRange.getValues();
/* Call Date() just once */
var date = new Date();
date = date.toString().split(' ').splice(0,4).join(' ');
if (values.length == 1) { // if active cell is 1, quickly insert date without loop
values[0][0] = date;
}
else {
for (var i = 0; i < values.length; i++) {
if (!values[i][0]) { // If cell isn't empty
values[i][0] = date;
}
}
}
columnXRange.setValues(values);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.