- Вы хотите создать новую электронную таблицу со стороны HTML.
- Вы хотите поместить значение в созданную электронную таблицу со стороны HTML.
- В вашей ситуации вы этого не сделаетехочу поставить
writeData()
в createSpreadsheet()
.А именно, вы хотите по отдельности использовать обе функции.
Если мое понимание верно, как насчет этого ответа?Пожалуйста, подумайте об этом как об одном из нескольких ответов.
Сначала точка модификации выглядит следующим образом.
Точка модификации:
Когда вы запускаете скрипт следующим образом,
google.script.run.createSpreadsheet(name);
google.script.run.writeData(data);
Функция writeData()
запускается до завершения функции createSpreadsheet()
, поскольку google.script.run
работает в асинхронном процессе.Чтобы избежать этого, в этом примере сценария используется withSuccessHandler()
.
Об измененном сценарии я ввожу 2 шаблона.Пожалуйста, выберите один из них.
Шаблон 1:
В этом шаблоне идентификатор файла возвращается с createSpreadsheet()
, а значение помещается в созданную электронную таблицу с использованием идентификатора файла.
Code.gs: Google Apps Script
function createSpreadsheet(name){
var ss = SpreadsheetApp.create(name);
var ssID = ss.getId();
return ssID;
}
function writeData(id, data){
var ss = SpreadsheetApp.openById(id);
var s = ss.getSheets()[0];
s.getRange('A1').setValue(data);
}
index.html: HTML и Javascript
<script>
function parse_to_backend(){
var name = document.getElementById("user_name").value;
var data = document.getElementById("user_data").value;
google.script.run.withSuccessHandler((id) => {
google.script.run.writeData(id, data);
}).createSpreadsheet(name);
};
</script>
Шаблон 2:
В этом шаблоне идентификатор файласохраняется в PropertiesService, а значение помещается в созданную электронную таблицу с использованием идентификатора файла, полученного из PropertiesService.В этом случае идентификатор файла сохраняется в PropertiesService.Таким образом, созданная электронная таблица может также использоваться другим действием Javascript с использованием идентификатора файла, полученного из PropertiesService.
Code.gs: Google Apps Script
function createSpreadsheet(name){
var ss = SpreadsheetApp.create(name);
var ssID = ss.getId();
PropertiesService.getScriptProperties().setProperty("ssID", ssID);
}
function writeData(data){
var id = PropertiesService.getScriptProperties().getProperty("ssID");
var ss = SpreadsheetApp.openById(id);
var s = ss.getSheets()[0];
s.getRange('A1').setValue(data);
}
index.html: HTML и Javascript
<script>
function parse_to_backend(){
var name = document.getElementById("user_name").value;
var data = document.getElementById("user_data").value;
google.script.run.withSuccessHandler(() => {
google.script.run.writeData(data);
}).createSpreadsheet(name);
};
</script>
Ссылки:
Если я неправильно понял ваш вопрос и этот ответ был не тем, что вы хотите, я прошу прощения.