Листы скриптов Google App - Как получить выделенный диапазон и записать в него данные - PullRequest
0 голосов
/ 09 февраля 2020

Я хотел бы записать данные, сгенерированные из моей собственной функции, в выделенную ячейку пользователя. Он должен иметь возможность выделять отдельные ячейки и несколько ячеек.

   if(isNaN(text))
     ui.alert('Input is not a number');
   else{

     var sheet = SpreadsheetApp.getActiveSheet();
     var activeRangeList = sheet.getActiveRangeList();

     if(activeRangeList==null)
       ui.alert('No range selected');
     else{
       var rgMyRange = sheet.getRange("B1:B10");
       rgMyRange.setValue(myFunc(NumberOfRowsHighlighted,parseInt(text)))
     }
   }

Я бы хотел, чтобы пользователь выделил диапазон, когда при запуске сценариев мне нужно получить количество выделенных строк вместе с введите номер для передачи в myfun c. Функция всегда генерирует массив того же размера, что и количество выделенных строк. Наконец, я хотел бы иметь возможность написать обратно в выделенную ячейку, используя массив, возвращаемый функцией.

пример возврата myfunct

[1,2,3,...,100]

Мне трудно читать документацию , так как Google действительно не определяет, что такое Range или RangeList и пример данные вернулись. Так что, если кто-нибудь сможет мне помочь, это будет с благодарностью.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2020

Я решил, используя разные объекты и функции, он чем-то похож на первый

  var sheet = SpreadsheetApp.getActiveSheet();
  var selection = sheet.getSelection();

  if(selection.getActiveRange().getA1Notation()==null)
    ui.alert('No range selected');

  else{

    var range = SpreadsheetApp.getActiveSpreadsheet().getRange(selection.getActiveRange().getA1Notation());
    range.setValues(GENERATEGROUP(10,parseInt(text)));
  }
1 голос
/ 09 февраля 2020

Я не уверен, что выводит функция GENERATEGROUP(10,parseInt(text)), но вот решение, которое записывает номера строк и столбцов в каждую ячейку в активном диапазоне (т. Е. Выбор пользователя)

//es6-V8
function writeActiveRange() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getActiveSheet();
  const rg=sh.getActiveRange();
  let v=rg.getValues();
  const row=rg.getRow();
  const col=rg.getColumn();
  v.forEach(function(r,i){r.forEach(function(c,j){v[i][j]=`Row:${row+i},Col:${col+j}`;});});
  rg.setValues(v);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...