Как получить диапазон от выбора мыши на листах Google и передать его как диапазон функции скрипта приложения? - PullRequest
1 голос
/ 22 октября 2019

В идеале ничто не может быть жестко запрограммировано за пределами самой таблицы по URL. В духе заставить вещи работать.

Я хотел бы взять выбор графического интерфейса в листах Google, получить его диапазон, передать диапазон функции, чтобы "делать вещи"

Вот чтоПока у меня есть ...

Кнопка графического интерфейса для вызова моего скрипта.

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Run Script Menu')
      .addItem('Run Test function', 'run')
      .addToUi();
}

Функция, предназначенная для захвата диапазона и передачи диапазона другой функции.

Вот «рабочая» жестко закодированная версия функции , например, функция rowData возвращает ожидаемый результат.

function run(){

    var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/myfullurl");
    var sheet = ss.getSheetByName("some sheet name")
    var range = sheet.getRange("A3:M3");
    var ar = sheet.setActiveRange(range);
    var rowData = getRowsData(sheet,ar,1);

 }

Вот мои попытки не hardзакодируйте только диапазон, который я пытаюсь передать функции.

function run(){

    var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/myfullurl");
    var sheet = ss.getSheetByName("some sheet name")
    var range = sheet.getSelection().getActiveRange();
    var ar = sheet.setActiveRange(range);
    var rowData = getRowsData(sheet,ar,1);

 }

Затем я получаю сообщение об ошибке

Specified range must be part of the sheet

Не уверен, полезно ли это, но getRowsData - эта функция https://gist.github.com/mhawksey/51a1501493787bc5b7f1

1 Ответ

1 голос
/ 22 октября 2019

Обе эти функции являются скриптом Google. Скопируйте их в файл .gs в редакторе сценариев и запустите getSelectRange (). Это запустит немодальный диалог. Сделайте выбор диапазона и нажмите кнопку, и диапазон появится в текстовом поле.

function getSelectRange() {
  var html='<input type="text" id="selrg" /><br /><input type="button" value="Get Selected Range" onClick="getSelectedRange();" />';
  html+='<script>function getSelectedRange(){google.script.run.withSuccessHandler(function(rg){document.getElementById("selrg").value=rg;}).getSelRange();}</script>';
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Get Select Range');
}

function getSelRange() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getActiveRange();
  return rg.getA1Notation();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...