0

我在谷歌电子表格中准备了一个格式,该格式接受多个用户的输入/更新。有时,三个或四个用户可能同时访问同一个工作表以更新工作表中的格式。

问题是:当我的 onEdit 函数在编辑工作表中的一行时触发日期/时间戳时,会引发错误(“oops ...”)。显示此错误时未插入大多数时间戳。

这可能是同时对多行进行的频繁编辑。谁能指导我如何解决这个问题;没有onedit功能的基于行的时间戳/日期是否有任何选项或替代方法?

以下是我用于日期/时间戳的脚本,如果下面提到的脚本中有错误,请纠正我。

function onEdit(){

 var s = SpreadsheetApp.getActiveSheet();  

 var sheetname = SpreadsheetApp.getActiveSheet().getName()

 var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Footfall-Format');

if(s.getName() == 'Footfall-Format' ) { //checks that we're on the correct sheet

var totrows = s.getMaxRows();

var r = s.getActiveCell();

if( r.getColumn() >= 2 &&  r.getColumn() <= 15) { //checks the column

// in order to conver -ve to +ve 

if(r.getColumn() < 0){

r.getColumn() = r.getColumn() * -1;

} 

//diffrence of colums makes a standar col

var settimsmp = 16 - r.getColumn();

//cahnge negetive num,ber to +ve then caculate row number;

var nextCell = r.offset(0, settimsmp);

if( nextCell.getValue() === '' ) //is empty?

var stringdate = new Date();

time = Utilities.formatDate(new Date(stringdate), "GMT", "dd-MMM-yyyy");   

nextCell.setValue(time);

SpreadsheetApp.flush(); //force the data to be written            

};

};

SpreadsheetApp.flush(); //force the data to be written

}
4

1 回答 1

1

这是一个常见的“关键部分”问题,Google Apps 脚本提供了锁定服务来解决它。

查看此答案,了解使用此技术的函数示例。

于 2013-05-28T16:40:25.183 回答