Скрипт Google Apps для перехода к заданной строке Google sheet

#google-chrome #google-apps-script #google-chrome-extension #google-sheets

#google-chrome #google-apps-script #google-chrome-расширение #google-sheets

Вопрос:

Я разрабатываю расширение Chrome, которое имеет доступ к Google Sheets с помощью отдельного скрипта Google Apps. Мне нужна помощь, чтобы иметь возможность перемещаться и выделять заданную переменную строку из моего расширения. либо с помощью скрипта приложения, либо каким-либо другим способом.

Я пробовал этот код в скрипте Google Apps.

 function navigateToRow(parameters) {
  var ss = SpreadsheetApp.openByUrl(parameters.url)
  var sheet = ss.getSheets()[0]
  var range = sheet.getRange('A1:D10'); // will get range from parameters in future
  range.activate();
}
  

Есть другое решение, которое могло бы решить проблему, но оно обновляет страницу: используя параметры URL, например
https://docs.google.com/spreadsheets/d/<spreadsheet id>/edit#gid=<sheet id>amp;range=<a1 notation> .

Комментарии:

1. Активация диапазона может вызвать проблемы, поскольку скрипт apps запускается в произвольном экземпляре, а не в браузере клиента. Итак, что значит «активировать диапазон», когда пользовательский интерфейс не привязан к этому экземпляру скрипта? Что делать, если лист открыт в трех браузерах, только в одном из которых даже установлено расширение? Дополнения G Suite привязаны к вызывающему документу и знают, какой экземпляр пользовательского интерфейса вызвал соответствующий код скрипта приложения

2. @tehhowch каково ваше мнение о developers.google.com/apps-script/reference/spreadsheet /… ?

3. Хэш URL # не обновит страницу.

4. Это кажется многообещающим. Спасибо

Ответ №1:

Попробуйте что-то вроде :

 var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1);
SpreadsheetApp.setActiveRange(range);
  

Ссылка: https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#setactiverangerange

Ответ №2:

Решается с использованием этих строк кода внутри content-script.

 hash = window.location.hash.split('amp;range=')[0]
hash  = `amp;range=${currentRowInput.value}:${currentRowInput.value}#`;
window.location.hash = hash