Вы не можете предоставить doPost () с параметром. Из документации:
When a user visits an app or a program sends the app an HTTP GET request, Apps Script runs the function doGet(e). When a program sends the app an HTTP POST request, Apps Script runs doPost(e) instead. In both cases, the e argument represents an event parameter that can contain information about any request parameters. The structure of the event object is shown in the table below:
И вот ссылка на это
Как я уже говорил в моем комментарии выше, простой способ передачи формы на сервер:
google.script.run.proccessForm(this.parentNode)
И это объясняется здесь и частично здесь
Ну, я наконец-то запустил ваш код Я уверен, что он не работает в V8.
Итак, я перешел на старую версию, и вот код, который я использовал:
GS:
function runThree() {
var html = HtmlService.createHtmlOutputFromFile('ah3').setWidth(400).setHeight(400);
SpreadsheetApp.getUi().showModelessDialog(html, 'Title');
}
function processForm(form) {
Logger.log(JSON.stringify(form));
var fileBlob=form.analysisCsv;
var folder=DriveApp.getFolderById(getGlobal('TestFolderId'));
var file=folder.createFile(fileBlob);
var csv=Utilities.parseCsv(file.getBlob().getDataAsString());
var sh=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet10");
var rg=sh.getRange(sh.getLastRow()+1,1,csv.length,csv[0].length).setValues(csv);
return "I've got it";
}
HTML:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<form>
<input type="file" name="analysisCsv" accept=".csv">
<input type="button" value="Save" onclick="intermediate(this.parentNode);">
<div id="msg"></div>
</form>
<script>
function intermediate(obj) {
google.script.run
.withSuccessHandler(function(msg){$('#msg').html(msg);google.script.host.close();})
.processForm(obj);
}
console.log('My Code');
</script>
</body>
</html>
Я только что создал CSV-файл и загрузил его в папку, а затем использовал Utilites.parseCsv () , который преобразует его в двумерный массив, который можно вставить в электронную таблицу с помощью setValues ();