【问题标题】:Google app script monitor spreadsheet selected ranges谷歌应用脚​​本监控电子表格选定范围
【发布时间】:2018-06-03 19:36:07
【问题描述】:

我想写一个可以获取选中单元格的app脚本

并将其显示在 html 输入文本上。

示例:

当我选择 A1 单元格时,输入文本将显示 A1

如果我选择了 A1 到 B11 之间的范围,那么它将显示 A1:B11

我知道getActiveRange().getA1Notation() 可以获取单元格。

但是如何监听拖拽选择事件呢?

【问题讨论】:

  • 你现在有什么事件可以调用getActiveRange()?

标签: google-apps-script add-on


【解决方案1】:

我将this 作为可能的解决方案。应用程序脚本如下所示。它工作得很好。不确定它是否是您正在寻找的东西。

function onOpen() {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .createMenu('Custom Menu')
      .addItem('Show sidebar', 'showSidebar')
      .addToUi();
}

function showSidebar() {
  var html = HtmlService.createHtmlOutputFromFile('Page')
      .setTitle('My custom sidebar')
      .setWidth(300);
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showSidebar(html);
}

function getActiveRange(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var range = sheet.getActiveRange().getA1Notation();
  Logger.log(range)
  return range  
}

侧栏具有每 200 秒调用一次的功能。让它看起来像是在获取鼠标拖动的数据。

<!DOCTYPE html>
<html>
<head>
    <base target="_top">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
    </script>
    <title></title>
</head>
<body>
        <input id="data"> 
        <script>
          $(document).ready(() => {
           setInterval(()=>{
           google.script.run.withSuccessHandler(log).getActiveRange();
           },200)    
          })       
          log(e) => {
            $('#data').val(e)
          }       
        </script> 
</body>
</html>

【讨论】:

  • 感谢您的代码。但是,您链接的示例页面似乎无法正常工作。
【解决方案2】:

2020 年 4 月新增活动:

参考:https://developers.google.com/apps-script/guides/triggers#onselectionchangee

/**
 * 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");
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多