Я новичок в Google AppScript, пытаюсь кодировать соединитель для пользовательского API REST. Для этого API мне нужен ключ API (или секретный ключ), то есть для каждого пользователя. Поскольку хранить секрет в открытом тексте внутри скрипта не самая лучшая идея, я подумал сохранить его в Google PropertyService и извлечь его оттуда. Например:
var userProperties = PropertiesService.getUserProperties();
var apiKey = userProperties.getProperty('MY_SECRET')
Но я не понимаю, как пользователь может сначала сохранить ключ? Я не нашел места, где пользователь (в данном случае я) мог просматривать или редактировать свойства. Затем я нашел это хорошее введение в пользовательские свойства , которое создает меню в контейнере сценария, позволяющее пользователю вводить секреты вручную.
const API_KEY = 'API_KEY';
var ui = SpreadsheetApp.getUi();
var userProperties = PropertiesService.getUserProperties();
function onOpen(){
ui.createMenu('API Keys')
.addItem('Set API Key', 'userPromptApiKey')
.addItem('Delete API Key', 'deleteApiKey')
.addToUi();
}
function userPromptApiKey(){
var userValue = ui.prompt('API Key ', ui.ButtonSet.OK);
// ToDo: add current key to the prompt
userProperties.setProperty(API_KEY, userValue.getResponseText());
}
function deleteApiKey(){
userProperties.deleteProperty(API_KEY)
}
Проблема в том, что мой скрипт не привязан ни к какому контейнеру (без электронной таблицы, без документа). Вместо этого я хочу использовать его в Google DataStudio позже. Вот почему
SpreadsheetApp.getUi();
не работает. Любая идея или рекомендация о том, как с этим бороться? Есть ли другой рекомендуемый способ работы с секретами?