#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