У меня есть скрипт, который проверяет, установлены ли свойства пользователя. Он отображает меню настроек, если их нет, и кнопку настроек, если они есть. Проблема в том, что когда я отправляю настройки (либо устанавливая новые, либо меняя старые), я не могу заставить скрипт вернуться в главное меню, то есть повторно запустить MainFunction
. Может ли кто-нибудь помочь мне с этим?
function MainFunction() {
var userProperties = PropertiesService.getUserProperties();
var api_key = userProperties.getProperty('api_key');
var source = userProperties.getProperty('source');
console.log(api_key);
console.log(source);
if (api_key == null || source == null || api_key.length < 2 || source.length < 2) {
return f_change_settings();
} else {
return f_add_settings_button();
}
}
function f_change_settings(s) {
var userProperties = PropertiesService.getUserProperties();
var api_key = userProperties.getProperty('api_key');
var source = userProperties.getProperty('source');
var action = CardService.newAction().setFunctionName('notificationCallback');
return CardService
.newCardBuilder()
.addSection(
CardService.newCardSection()
.addWidget(CardService.newTextInput().setFieldName('api_key').setTitle('api_key').setValue(api_key))
.addWidget(CardService.newTextInput().setFieldName('source').setTitle('source').setValue(api_key))
.addWidget(CardService.newTextButton().setText('Submit').setOnClickAction(action))
.addWidget(CardService.newTextParagraph().setText(' '))
)
.build();
}
function notificationCallback(a) {
console.log(a);
console.log(a.formInput['source']);
var userProperties = PropertiesService.getUserProperties();
userProperties.setProperty('api_key', a.formInput['api_key']);
userProperties.setProperty('source', a.formInput['source']);
CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification()
.setText("Done"))
.build();
// MainFunction();
return;
}
function f_add_settings_button() {
var action = CardService.newAction().setFunctionName('f_change_settings');
return CardService
.newCardBuilder()
.addSection(
CardService.newCardSection()
.addWidget(CardService.newTextButton().setText('Settings').setOnClickAction(action))
.addWidget(CardService.newTextParagraph().setText(' '))
)
.build();
}
Я пытался вызвать MainFunction
из-за обратного вызова, но не работал (строка с комментариями).