Этот вопрос является дополнительным вопросом к: Можно ли создать интерактивное веб-приложение с помощью GAS?
Я пишу сценарий, который должен выполнять следующие действия:
- Запросите у пользователя его номер пользователя
- Запросите у пользователя номер строки в электронной таблице (если он его знает) и некоторую дополнительную информацию.
- Если они не знают строку, найдите для них строку и отобразите ее.
- Попросите у них дополнительную информацию.
Это, очевидно, требует оператора if / else.Я просто не знаю, как его сформировать.
Я пытался разместить код на стороне клиента и сервера, и ни один из них не работает.Я также понял, что некоторые JS, кажется, работают на стороне клиента, а некоторые нет. Соответственно, я исследовал JS на стороне клиента в целом, но не нашел конкретных правил для того, что работает и не работает.
html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<center>
Enter your User ID below. If you are re-using a row in your Catalog Spreadsheet (meaning you know the row number),<br>
enter it below in the "Song ID" field, enter the Song Title, and then click the "Continue" button. Else, enter your<br>
User ID only and click the "Continue" button. We will find the next avalable empty row at the end of your Catalog<br>
Spreadsheet and display its value to you. Then you may enter it and your Song Title. After you do, click the<br>
"Continue" button to create the lyric sheet and add the new song to your Catalog Spreadsheet.<br><br>
Note: We will automatically add your name to the lyric sheet as the songwriter. Add additional writers manually<br>
on the lyric sheet.<br><br>
<div>
<input id="user" type="text" placeholder="User ID"><br><br>
<div id="results"></div>
</div>
<input id="song" type="text" placeholder="Song ID"><br><br>
<input id="title" type="text" placeholder="Song Title"><br><br>
<input type="button" value="Continue" onclick="saveUserInput()"><br><br>
</center>
<script>
function saveUserInput() {
var userId = document.getElementById('userId').value;
var songId = document.getElementById('userId').value;
if(songId != ""){
window.saveUserInput = function() {
var userId = document.getElementById('userId').value;
var songId = document.getElementById('songId').value;
var songTitle = document.getElementById('idNewSongTitle').value;
console.log('songTitle: ' + songTitle)
google.script.run
.withSuccessHandler(openPrompt)
.getSongId({userId:userId, songId:songId, songTitle:songTitle})
}
}
else {
google.script.run
.withSuccessHandler(function(hl){
document.getElementById('results').innerHTML=hl;
})
.getSongId({userId:userId})
}
function openPrompt(results){
window.open(results.url, '_blank').focus();
}
}
</script>
</body>
</html>
gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function getSongId(uObj) {
var userId = uObj.userId;
var songId = uObj.songId;
var songTitle = uObj.songTitle;
if(songId !=""){
Code not included to keep this brief, but it has been tested in other applications of this project and works and what it does is: if the user has entered a Song ID, this code creates the new lyric sheet and adds the new song name to the Catalog SS.
}
else{
This code does this:
return ('The next available row for the new song is '+songId);
}
}
Когда я запускаю то, что у меня есть, выходная запись Transcript выполнения выглядит следующим образом:
- [19-05-29 07:54:16: 951 EDT] Начало выполнения
- [19-05-29 07: 54: 16: 959 EDT] HtmlService.createHtmlOutputFromFile ([индекс]) [0 секунд]
- [19-05-29 07: 54: 16: 961 EDT] HtmlOutput.getContent () [0 секунд]
- [19-05-29 07: 54: 16: 961 EDT] HtmlOutput.getTitle () [0 секунд]
- [19-05-29 07: 54: 16: 962 EDT] Выполнение выполнено [общее время выполнения 0,003 секунды]