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
Google apps script 添加脚本后撤消功能不起作用_Google Apps Script - Fatal编程技术网

Google apps script 添加脚本后撤消功能不起作用

Google apps script 添加脚本后撤消功能不起作用,google-apps-script,Google Apps Script,我有一个脚本来隐藏或显示具有特定值的行,它工作得很好,只是我有一个问题,如果我确实更改了电子表格中任何单元格的值,即使是在其他工作表(sheet2)中,并且我想撤消该更改,撤消功能在我重复30次以上之前不会工作!!!如果我删除脚本,它会正常工作 我是否必须添加、更改或删除此脚本的任何代码才能使撤消功能像添加脚本之前一样正常工作 多谢各位 我试图更改这一行:var ss=SpreadsheetApp.getActiveSpreadsheet() 让撤消正常工作 或者让它至少在特定的表单中产生影响,

我有一个脚本来隐藏或显示具有特定值的行,它工作得很好,只是我有一个问题,如果我确实更改了电子表格中任何单元格的值,即使是在其他工作表(sheet2)中,并且我想撤消该更改,撤消功能在我重复30次以上之前不会工作!!!如果我删除脚本,它会正常工作

我是否必须添加、更改或删除此脚本的任何代码才能使撤消功能像添加脚本之前一样正常工作

多谢各位

我试图更改这一行:
var ss=SpreadsheetApp.getActiveSpreadsheet()
让撤消正常工作
或者让它至少在特定的表单中产生影响,但我不能

这是完整的脚本

函数myShowHide(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName(“sheet1”);
var lastRow=sheet.getLastRow();

对于(i=4;i假设您使用可安装的onEdit()触发器运行此操作,那么这将解决与其他工作表交互的问题

function myShowHide(e) {
  var sh=e.range.getSheet();
  var rg=sh.getRange(4,10,sh.getLastRow(),1);
  var sA=rg.getValues();
  for(var i=0;i<sA.length;i++) {
    if(sA[i][0]=="X") {
      sh.showRows(i+4);
    }else{
      sh.hideRows(i+4);
    }
  }
}
但是解决Sheet1上的问题取决于您希望工作表如何运行。如果您使用编辑触发器运行工作表,则可以随时在工作表上的任何位置进行编辑。您可以限制编辑范围,但这需要知道您希望对工作表做什么,我不知道

我的建议是不要使用onEdit()触发器运行此类函数。此函数的运行速度要快得多,因为我一次获取所有数据,但行仍然一次显示或隐藏一行


您的脚本是否链接到onEdit触发器?使用logger.Log(lastRow)显示最后一行;由于以前的操作,您的最后一行可能是(现在)具有高索引的空行,这使for循环执行其他步骤来隐藏所有空行。如果这不是问题的根源-我需要查看您的电子表格以了解问题的来源。是的,它链接到onEdit触发器(从电子表格-打开)查看我的电子表格没有问题,我会为你分享。非常感谢。请在你的问题中嵌入电子表格的链接-确保不包含任何敏感的私人信息谢谢朋友的回复,但不幸的是它不起作用,当我添加这两行时,主功能不起作用,这意味着它没有隐藏或显示行,我觉得我这边有点问题,但我不知道在哪里!!我对它做了一些更改,然后再试一次。只需复制、粘贴和编辑以进行测试。不要从脚本编辑器运行,因为它需要从编辑触发器获取的事件对象。保留旧函数,因为它是新函数的一部分。上次更改后ge的主要功能运行良好,但撤销功能仍然不起作用!!请您为我键入完整的脚本-新旧脚本,以确保我将其正确放置。非常感谢。
function myNewShowHide(e) {
  var sh=e.range.getSheet();
  if(sh.getName()!="Sheet1")return;
  myShowHide(e);
}