Javascript 在编辑时跨多个工作表的单元格上放置时间戳
我尝试了这个脚本的许多不同变体,但不明白为什么它不起作用。 我想在多个选项卡onedit上用时间戳更新同一单元格“J3”。我在电子表格上有另一个函数已经在使用onEdit(e),所以我用onEdit触发器设置了一个新函数。 我检索要更新的选项卡的名称并将其存储在数组中Javascript 在编辑时跨多个工作表的单元格上放置时间戳,javascript,google-apps-script,Javascript,Google Apps Script,我尝试了这个脚本的许多不同变体,但不明白为什么它不起作用。 我想在多个选项卡onedit上用时间戳更新同一单元格“J3”。我在电子表格上有另一个函数已经在使用onEdit(e),所以我用onEdit触发器设置了一个新函数。 我检索要更新的选项卡的名称并将其存储在数组中 function Overview_timestamp(e) //function to use in the onEdit trigger { var activeSheet = e.source.getActiveShee
function Overview_timestamp(e) //function to use in the onEdit trigger
{
var activeSheet = e.source.getActiveSheet();
var range = e.range;
var cellToStamp = "J3" ;
var name_range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Structure').getRange(2, 5, 14, 1).getValues(); //sheets i want to update
var flattened_name_range = [] ; //converting into 1D array
for (var i = 0; i < name_range.length; i++) {
flattened_name_range.push(name_range[i][0]);
}
if(flattened_name_range.indexOf(activeSheet())!==-1 ) {
activeSheet.getRange(cellToStamp).setValue(new Date()).setNumberFormat("yyyy-MM-dd hh:mm:ss");}
}
function Overview\u timestamp(e)//要在onEdit触发器中使用的函数
{
var activeSheet=e.source.getActiveSheet();
var范围=e范围;
var cellToStamp=“J3”;
var name_range=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Structure').getRange(2,5,14,1).getValues();//我要更新的工作表
var_name_range=[];//转换为1D数组
对于(变量i=0;i
试试这个:
function Overview_timestamp(e) {
const sh = e.range.getSheet();
if (sh.getName() == 'Sheet name') {//just to limit action to one sheet but it would be nice to have additional control like clicking a checkbox or selecting a value on a validated cell.
const shts = e.source.getSheetByName('Structure').getRange(2, 5, 14).getValues().flat();
shts.forEach(n => {
e.source.getSheetByName(n).getRange('J3').setValue(new Date()).setNumberFormat("yyyy-MM-dd hh:mm:ss")
});
}
}
我是这样做的,在我的工作表上使用了表1中A1处的复选框
function onEdit(e) {
//e.source.toast('entry');
const sh = e.range.getSheet();
if (sh.getName() == 'Sheet1' && e.range.columnStart==1 && e.range.rowStart==1 && e.value=='TRUE') {
//e.source.toast('cond');
const shts = e.source.getSheetByName('Sheet2').getRange(2, 5, 14).getValues().flat().filter(e=>e);
shts.forEach(n => {
e.source.getSheetByName(n).getRange('J3').setValue(new Date()).setNumberFormat("yyyy-MM-dd hh:mm:ss")
});
e.range.setValue('FALSE');
}
}
项目中的每个函数都必须具有唯一的名称。因此,我建议您结合您的onEdit()主题,以便快速回复。但它没有起作用。它让它实际工作,并改变了一些东西,现在它停止工作。再次感谢,尝试了你的代码,但对我来说不起作用。甚至在已经存在的onEdit中尝试过。它对我有效