Я создал функцию для добавления массива в электронную таблицу Google. Обычно в моем массиве более 5 элементов. На стороне клиента я группирую данные в массив и отправляю на сервер, используя «google.script.run. myFunction (params) ». Затем я использую структуру al oop, чтобы сделать это на стороне сервера. Я полагаю, что моя клиентская сторона работает, даже серверная сторона не закончила работу. Как я мог бы сделать, чтобы клиентская сторона ожидала, что серверная часть закончит sh запуск?
По крайней мере, моя серверная сторона также выполняет добавление в электронную таблицу, не дожидаясь выполнения финал sh.
Моя функция на стороне клиента:
function sendArr(){
var userInfo = {};
var arr = new Array();
var localTable = "";
var gravar = 0;
try{
localTable = document.getElementById("scheduleTable");
if(document.getElementById("repNome").value === "") {
throw new Error();
}
if(document.getElementById("yearSchedule").value === ""){
throw new Error();
};
for(var i=1;i<localTable.rows.length;i++){
for(var y=1;y<localTable.rows[0].cells.length;y++){
var hour = document.getElementById(localTable.rows[i].cells[0].innerHTML+localTable.rows[0].cells[y].innerHTML).value;
if(hour !== ""){
userInfo.repName = document.getElementById("repNome").value;
userInfo.week = document.getElementById("yearSchedule").value;
userInfo.cdlName = localTable.rows[i].cells[0].innerHTML;
userInfo.dayName = localTable.rows[0].cells[y].innerHTML;
userInfo.hour = hour;
arr.push(userInfo);
gravar = 1;
}
}
}
if(gravar === 1) {
google.script.run.myFunction(arr);
alert("Ok!")
};
} catch(err) {
alert(err.message);
}
}
Моя функция на стороне сервера:
var url = "mylink.com";
function myFunction(arr) {
try{
var ss = SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("AgendaSemanal");
let userInfo = [];
for(i = 0; i<arr.length; i++) {
userInfo = arr[i];
ws.appendRow([userInfo.repName,
userInfo.week,
userInfo.cdlName,
userInfo.dayName,
userInfo.hour,
new Date()])
}
} catch(err){
Logger.log(err);
} finally {
return ;
}
}```