这可能真的很简单,但我无法弄清楚。
我有一个时间戳脚本,是我从这个酷炫的dude
复制来的现在,如果列A,B,C中的单元格已更改或已填充,我只想 创建一个时间戳。
/**
* Creates a Date Stamp if a column is edited.
*/
//CORE VARIABLES
// The column you want to check if something is entered.
var COLUMNTOCHECK = [2,3];
// Where you want the date time stamp offset from the input location. [row, column]
var DATETIMELOCATION = [0,1];
// Sheet you are working on
var SHEETNAME = 'Sheet1'
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
//checks that we're on the correct sheet.
if( sheet.getSheetName() == SHEETNAME ) {
var selectedCell = ss.getActiveCell();
//checks the column to ensure it is on the one we want to cause the date to appear.
if( selectedCell.getColumn() == COLUMNTOCHECK[0,1]) {
var dateTimeCell = selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
dateTimeCell.setValue(new Date());
}
}
}
我曾假设在带有var索引的if语句上添加一个子句将解决此问题,将COLUMNTOCHECK更改为[2,3,4,5],依此类推。
if( selectedCell.getColumn() == COLUMNTOCHECK[0] || selectedCell.getColumn() == COLUMNTOCHECK[1] )
编辑。
对不起,我对我的英语使用不当和要求不明确表示歉意。
以下是我想要的。
例如
John将销售数据输入到单元格A2,B2 =已创建时间戳记中。
John将数据输入到单元格A2 =未创建时间戳。
希望这有意义吗?
答案 0 :(得分:1)
indexOf()
数组上使用COLUMNTOCHECK
来检查您正在观看的列之一是否已被编辑。COLUMNTOCHECK
,然后检查已编辑行中每一列的值。如果该行中的每一列都有一个值,请输入时间戳。根据您的要求,您可以简化步骤3并使之运行得更快。如果仅检查A和B列,则只需获取一次该范围(editedSheet.getRange(editedRow, 1, 1, 2).getValues()
),然后遍历返回的值数组。
还请注意,我删除了偏移量并将时间戳记放置在C列中。同样,我不确定您的要求,但是对于B列中进行的编辑,您的实现将覆盖B列中的值。 / p>
function onEdit(e) {
var COLUMN_TO_CHECK = [1,2]; // The columns to check if something is entered. (Columns A & B)
var DATE_TIME_COLUMN = 3; // Where you want the date time stamp (Column C)
var SHEET_NAME = "Sheet1"; // Sheet you are working on
var editedCell = e.range;
var editedSheet = e.range.getSheet();
if (editedSheet.getName() === SHEET_NAME) {
if (COLUMN_TO_CHECK.indexOf(editedCell.getColumn()) != -1) {
var allFilled = true;
var editedRow = editedCell.getRow();
for (var i in COLUMN_TO_CHECK) {
if (editedSheet.getRange(editedRow, COLUMN_TO_CHECK[i]).getValue() == "") {
allFilled = false;
}
}
if (allFilled) {
editedSheet.getRange(editedRow,DATE_TIME_COLUMN).setValue(new Date());
}
}
}
}