Я студент Христианского университета Абилина. Каждый год студенческие организации отправляют заявки на финансирование в Ассоциацию студенческого самоуправления университета, используя Google Sheets. Я работаю над небольшим дополнением G Suite для Google Sheets, чтобы быстро импортировать соответствующие данные из каждого из этих запросов на финансирование в один бюджетный документ.
Чтобы выбрать папку, содержащую запросы на финансирование, я хотел бы использовать Google Picker API. My Apps Script - это отдельный проект, который можно запускать как дополнение; Я успешно настроил ключ API разработчика и учетные данные OAuth с помощью стандартного проекта Google Cloud Platform.
Сценарий и соответствующие электронные таблицы хранятся в Team Drive, что, как я понимаю, может усложнить как права доступа к сценарию, так и использование API выбора.
К сожалению, прежде чем клиентский код сможет вызывать API, код скрипта Apps на стороне сервера, похоже, игнорирует функцию обратного вызова, которая отображает окно Picker в модальном режиме. Поскольку проект только начался, текущий код очень минимален.
Ниже представлен весь серверный код в моем проекте. Что бы это ни стоило, поскольку я разрабатываю локально с помощью clasp, приведенный ниже код взят из моего файла Typescript, а не из файла скриптов Apps, переданного.
function onOpen(e) {
let ui = SpreadsheetApp.getUi();
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
buildMenu(ui.createAddonMenu());
} else {
buildMenu(ui.createMenu('Requests'));
}
}
function buildMenu(menu) {
menu.addItem('Select requests', 'selectRequests').addToUi();
}
function onInstall(e) {
onOpen(e);
}
function selectRequests() {
const html = HtmlService.createHtmlOutputFromFile('RequestsPicker')
.setWidth(600)
.setHeight(425)
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
SpreadsheetApp.getUi().showModalDialog(html, 'Select Funding Requests Folder');
}
Вместо запуска selectRequests
и отображения модального кода, код запрашивает авторизацию, а затем открывает новое минимальное окно браузера с текущей электронной таблицей. Кажется, это происходит независимо от имени, которое я предоставляю функции addItem
. Я попытался предоставить несуществующие имена функций, и результат тот же.
Кроме того, я протестировал этот скрипт с другими настройками AuthMode
и с файлами вне Team Drive. Эти факторы также не влияют на поведение кода.
Почему я сталкиваюсь с таким поведением и как я могу исправить это?
Заранее благодарю за помощь!