【问题标题】:What am I doing wrong when using onSelectionChange使用 onSelectionChange 时我做错了什么
【发布时间】:2020-04-24 13:00:36
【问题描述】:

我在developers.google.com 上找到了这个触发器onSelectionChange(e),如果选择了一个空单元格,它应该将背景设置为红色。仅通过复制和粘贴就无法获得该结果。我不认为我错过了任何帮助。

/**
 * The event handler triggered when the selection changes in the spreadsheet.
 * @param {Event} e The onSelectionChange event.
 */
function onSelectionChange(e) {
  // Set background to red if a single empty cell is selected.
  var range = e.range;
  if(range.getNumRows() === 1 
      && range.getNumColumns() === 1 
      && range.getCell(1, 1).getValue() === "") {
    range.setBackground("red");
  }
}

【问题讨论】:

  • 它仍然对我不起作用。您是否提交了错误报告?

标签: google-apps-script google-sheets triggers


【解决方案1】:

更新:

它似乎已完全向所有用户推出。您应该能够在不修改代码的情况下使其正常工作。 e, 事件对象类似于onEdit 事件对象。


onSelectionChange 是最近推出的功能。考虑等待几天将该功能推广到您的特定项目和电子表格。

【讨论】:

  • 是否有 ETA 可用于每个脚本?还会有developers.google.com/apps-script/guides/triggers/… 更新活动内容吗?
  • @Kos 我跟你一样瞎。通常延迟最多为 2 周。不知道事件对象,但根据演示代码,我们至少有 e.range
  • 两年后,他们仍然没有透露文档中 e 对象中的内容。 developers.google.com/apps-script/guides/triggers/events我发了反馈,不知道会有处理。
  • 我在onSelectionChange(e) 函数中添加了for (x=0; x<Object.keys(e).length; x++){console.log(Object.keys(e)[x].toString())},发现它具有sourceauthModeuserrange 元素。我会假设(但如果没有大量测试就无法确定)这些基本上是onEdit(e) 的元素的子集,没有值并且行为方式相同 - 尽管我想知道范围是在更改之前还是之后。
【解决方案2】:

使用旧版运行时,而不是 V8 运行时。在我的情况下,使用 V8 运行时有时会触发,有时不会。 V8 中的触发器执行存在一般问题,请参阅https://issuetracker.google.com/issues/147016387

【讨论】:

  • 此问题已报告为已修复。
  • 我仍然有问题,有时有效,有时无效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 2021-04-19
  • 2017-03-13
相关资源
最近更新 更多