Google apps script 谷歌表单onEdit不知从哪里停止了工作

Google apps script 谷歌表单onEdit不知从哪里停止了工作,google-apps-script,google-sheets,Google Apps Script,Google Sheets,不知什么原因,“onEdit”功能突然停止了对我的工作,请有人帮帮忙。 昨天一切正常,我检查了授权,但出于某种原因,下面的onEdit()脚本不再适用于我? 我还从undefined错误中获得了“无法读取属性”范围 函数onEdit(e){ 插入行(e); 时间戳(e); } 函数插入行(e){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var范围=e范围; 如果(sh.getName()!=“Test”)返回; var colIValue=sh

不知什么原因,“onEdit”功能突然停止了对我的工作,请有人帮帮忙。 昨天一切正常,我检查了授权,但出于某种原因,下面的
onEdit()
脚本不再适用于我? 我还从undefined错误中获得了“无法读取属性”范围

函数onEdit(e){
插入行(e);
时间戳(e);
}
函数插入行(e){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var范围=e范围;
如果(sh.getName()!=“Test”)返回;
var colIValue=sh.getRange(e.range.rowStart,9.getValue();
var colHValue=sh.getRange(e.range.rowStart,8.getValue();
if(colHValue==“Yes”&e.range.getColumn()==9&colIValue==true){
sh.insertRowsAfter(e.range.rowStart,Number(sh.getRange(e.range.rowStart,4.getValue())-1);
}
}
函数时间戳(e){
var sh=e.range.getSheet();
如果(sh.getName()!=“Test”){return;}
如果(e.range.columnStart尝试以下方法:

function onEdit(e) {
  //e.source.toast('Flag1');
  insertRow(e);
  timeStamp(e);
}

function insertRow(e) {
  //e.source.toast('flag2');
  var sh=e.range.getSheet();
  var range = e.range;
  if(sh.getName()!="Test")return;
  var colIValue=sh.getRange(e.range.rowStart,9).getValue();
  var colHValue=sh.getRange(e.range.rowStart,8).getValue();
  //the next line is always false unless you have a checkbox in column9 and you set it up with a custom value of 'yes' for true.
  if (colHValue=="Yes" && e.range.columnStart==9 && colIValue==true){
    sh.insertRowsAfter(e.range.rowStart, Number(sh.getRange(e.range.rowStart,4).getValue())-1);
  }
}

function timeStamp(e) {
  //e.source.toast('flag3');
  var sh=e.range.getSheet();
  if(sh.getName()!="Test"){return;}
  if(e.range.columnStart<7) {
    var ts=Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"MM/dd/yy HH:mm");
    sh.getRange(e.range.rowStart,7,e.range.rowEnd-e.range.rowStart+1,1).setValue(ts);
  }
}
函数onEdit(e){
//e、 来源:toast('Flag1');
插入行(e);
时间戳(e);
}
函数插入行(e){
//e、 来源:toast('flag2');
var sh=e.range.getSheet();
var范围=e范围;
如果(sh.getName()!=“Test”)返回;
var colIValue=sh.getRange(e.range.rowStart,9.getValue();
var colHValue=sh.getRange(e.range.rowStart,8.getValue();
//下一行始终为false,除非您在第9列中有一个复选框,并将其设置为自定义值“yes”为true。
if(colHValue==“Yes”&&e.range.columnStart==9&&colIValue==true){
sh.insertRowsAfter(e.range.rowStart,Number(sh.getRange(e.range.rowStart,4.getValue())-1);
}
}
函数时间戳(e){
//e、 来源:toast(“flag3”);
var sh=e.range.getSheet();
如果(sh.getName()!=“Test”){return;}

如果(e.range.columnStart如果您一次编辑两个以上的范围,onEdit将忽略这些更改,因此onEdit内部应用的任何逻辑都应该假设您不会在一半的时间内执行onEdit。解决此问题的最佳解决方案是什么?当您应用函数的逻辑时,您只需要假设您错过了一系列更改onEdit的意思是你必须查看整列或整行,这是非常特定于你的情况的,比如说你想要时间戳,那么现在你需要以某种方式检查某个东西是否已经有时间戳,你可能需要一次输入3个时间戳。很抱歉,我真的是一个初学者,我该怎么做?这个奇怪的问题是现在的我是,即使插入行也不再工作了,我删除了timeStamp函数只是为了检查它是否工作。这两个函数都没有在insertRow
var ss=SpreadsheetApp.getActiveSpreadsheet()中使用;var range=e.range;
但是
sh
是而且没有定义。你需要花一些时间学习如何调试代码。祝你新年快乐@Cooper,万事如意!我尝试了上面的代码,它和以前一样工作得很好。我可以问一下我发布的代码中缺少了什么使它停止工作的地方吗?
function onEdit(e) {
  //e.source.toast('Flag1');
  insertRow(e);
  timeStamp(e);
}

function insertRow(e) {
  //e.source.toast('flag2');
  var sh=e.range.getSheet();
  var range = e.range;
  if(sh.getName()!="Test")return;
  var colIValue=sh.getRange(e.range.rowStart,9).getValue();
  var colHValue=sh.getRange(e.range.rowStart,8).getValue();
  //the next line is always false unless you have a checkbox in column9 and you set it up with a custom value of 'yes' for true.
  if (colHValue=="Yes" && e.range.columnStart==9 && colIValue==true){
    sh.insertRowsAfter(e.range.rowStart, Number(sh.getRange(e.range.rowStart,4).getValue())-1);
  }
}

function timeStamp(e) {
  //e.source.toast('flag3');
  var sh=e.range.getSheet();
  if(sh.getName()!="Test"){return;}
  if(e.range.columnStart<7) {
    var ts=Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"MM/dd/yy HH:mm");
    sh.getRange(e.range.rowStart,7,e.range.rowEnd-e.range.rowStart+1,1).setValue(ts);
  }
}