Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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_Google Sheets - Fatal编程技术网

Google apps script 自动将单元格还原为正确格式

Google apps script 自动将单元格还原为正确格式,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我的电子表格中有一些灰色单元格,它们应该接受用户输入。我已保护工作表上的所有其他单元格: 我希望防止最终用户更改单元格格式(背景色、边框、合并单元格) 主要问题是当用户粘贴来自另一个电子表格的内容时,因为粘贴会附带来自其他电子表格的所有格式,并取消合并/取消颜色单元格 我正在尝试使用onEdit(e)执行此操作,并还原活动单元格的格式。一个问题是,如果粘贴在一组单元格中,“e.range”是错误的,并且被替换: function onEdit(e){ var row = e.range.g

我的电子表格中有一些灰色单元格,它们应该接受用户输入。我已保护工作表上的所有其他单元格:

我希望防止最终用户更改单元格格式(背景色、边框、合并单元格)

主要问题是当用户粘贴来自另一个电子表格的内容时,因为粘贴会附带来自其他电子表格的所有格式,并取消合并/取消颜色单元格

我正在尝试使用onEdit(e)执行此操作,并还原活动单元格的格式。一个问题是,如果粘贴在一组单元格中,“e.range”是错误的,并且被替换:

function onEdit(e){
  var row = e.range.getRow();
  var col = e.range.getColumn();
  Browser.msgBox(row + "," + col); // wrong on multi-cell paste
}
另一种方法是使用克隆隐藏工作表,并不断将内容从该工作表复制到活动工作表上,但由于我提到的保护,它需要一段时间才能运行,因为它必须遍历所有未受保护的单元格


提前感谢您的建议。

您能否将粘贴范围的格式存储在另一张纸上的另一个范围内,然后使用我们的CopyFormatorRange将其重新格式化,使其恢复到OneEdit触发器功能中每次粘贴后的格式?谢谢您的建议@Cooper!我曾尝试对克隆的隐藏工作表执行类似的操作,但我认为您的建议是仅存储和重建用户正在编辑/粘贴的特定输入框。我要试一试。我担心的是,很难知道用户正在使用哪个单元格,因为粘贴一组单元格会抵消onEdit的e.range,但我可能可以按照您的建议使用命名范围并恢复活动工作表中的所有命名范围。或者只保存整个工作表的格式。这就是我在问题的最后一段中试图解释的内容。你对特定单元格重新格式化的想法可能是一个解决方案——我将尝试一下。对于整个工作表,我无法将整个隐藏工作表的格式粘贴到可见工作表上,因为除了某些单元格外,可见工作表受到保护。再次感谢您的投入!我不是建议你粘贴它们。我认为你应该使用range.copyFormatorRange。在[range page for spreadsheets](电子表格范围页)上查找它。您可以将其添加到OneEdit例程中。