【发布时间】:2023-01-20 04:44:10
【问题描述】:
我正在为我和一些朋友一起玩的 TTRPG 制作 Google 表格,我正在尝试找到制作自动单元格笔记的最佳方法。我在这里找到了一个有效的解决方案并对其进行了修改以匹配我的工作表,但我对 Google Scripts 非常陌生,并且确信我做事效率低下。
目前的解决方案是:
function onEdit(e){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('Copy of Digital'); var range = sheet.getRange("R31:T59"); range.clearNote(); for (var x=1;x<30;x++) { range.getCell(x, 1).setNote(range.getCell(x, 3).getValue()); }}
这是满足我需求的可行解决方案,但我总是想把事情做得比“可行”更远:)。我知道少量 C#,但 JavaScript 对我来说是全新的。我在当前实施中看到的问题和可能需要改进的领域是:
-
由于工作表另一部分的格式要求,我运行此解决方案的每隔一行将始终为空,但解决方案每次都会检查空行是否有注释。有没有办法让解决方案每隔两行跳过一次?我可以指定确切的单元格而不是范围(JavaScript 是否使用绝对引用,如工作表公式)?
-
我可以在工作表中指定多个范围以使该解决方案起作用吗?是不是定义第二个范围那么简单?
-
是否可以将
onEdit(e)函数的激活限制为仅在编辑特定范围时触发?我正在生成一个“人才”列表,需要脚本在玩家通过验证列表更改装备时运行,但据我了解(和测试)onEdit(e)将在修改任何单元格时运行(这将导致到许多不必要的脚本激活)。 -
如果我在同一张表格中激活了同一个选项卡的多个副本,多个玩家是否可以同时使用他们自己的表格版本? (我认为这一定需要删除/修改 getSheetByName 行,但我只花了 2 天时间就开始学习这个!)
非常抱歉有这么多问题!非常感谢任何和所有帮助!
【问题讨论】: