Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在编辑时跨多个工作表的单元格上放置时间戳_Javascript_Google Apps Script - Fatal编程技术网

Javascript 在编辑时跨多个工作表的单元格上放置时间戳

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

我尝试了这个脚本的许多不同变体,但不明白为什么它不起作用。 我想在多个选项卡onedit上用时间戳更新同一单元格“J3”。我在电子表格上有另一个函数已经在使用onEdit(e),所以我用onEdit触发器设置了一个新函数。 我检索要更新的选项卡的名称并将其存储在数组中

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中尝试过。它对我有效