我知道如何编写一个简单的应用程序脚本(一旦发布)提供了一个简单的表单(名称和消息),可以在Google电子表格中推送值。
我的问题是:如何从我的网站运行脚本?我是否可以构建一个html表单,当我在电子表格中提交表单时? p>
有没有办法去创造"包含必须在电子表格中推送的值的链接?
我在哪里可以找到例子?
由于
修改
GS CODE
var logSheetId = "[SHEETID]"; // Drive ID of log spreadsheet
function doGet(e){
var nome;
var messaggio;
nome = e.parameter.stringaNome;
messaggio=e.parameter.stringaMessaggio;
scriviSpreadsheet(nome,messaggio);
}
function scriviSpreadsheet(nome, messaggio) {
try {
// Open the log and record the new file name, URL and name from form
var ss = SpreadsheetApp.openById(logSheetId);
var sheet = ss.getSheets()[0];
sheet.appendRow([nome, messaggio]);
// Return the new file Drive URL so it can be put in the web app output
//return file.getUrl();
} catch (error) {
return error.toString();
}
}
HTML(外部网站)
<form id="myForm">
<input type="text" id="nome" name="nome" placeholder="Il tuo nome"/>
<input type="text" id="messaggio" name="messaggio"/>
<input type="button" value="Submit"
onclick="scrivi()" />
</form>
<script>
function scrivi(){
var nome= document.getElementById("nome").value;
var messaggio = document.getElementById("messaggio").value;
var location = "https://script.google.com/macros/s/[MYSCRIPTID]/exec?stringaNome=" + nome + "&stringaMessaggio=" + messaggio;
window.location = location;
}
function onFailure(error) {
alert(error.message);
}
</script>
我知道它不是最好的代码,但它有效。
当我点击按钮时,如何避免打开任何页面?
答案 0 :(得分:3)
form.html:
<form action="https://script.google.com/macros/s/[SCRIPT ID]/exec" method="post">
Input One:<br>
<input type="text" name="inputOne"><br>
Input Two:<br>
<input type="text" name="inputTwo"><br>
Input Three:<br>
<input type="text" name="inputThree"><br>
Input Four:<br>
<input type="text" name="inputFour"><br>
Input Five:<br>
<input type="text" name="inputFive"><br>
<input type="submit" value="Submit">
</form>
Code.gs:
function doPost(e) {
var ss = SpreadsheetApp.openById("SHEET ID");
var sheet = ss.getSheetByName("Sheet1");
var sheet_counters = ss.getSheetByName("Counters");
var id = sheet_counters.getRange("A2").getValue()+1;
var timeZone = ss.getSpreadsheetTimeZone();
var timestamp = Utilities.formatDate(new Date(), timeZone, "dd/MM/yyyy HH:mm:ss");
sheet.appendRow([
id,
timestamp,
e.parameter.inputOne,
e.parameter.inputTwo,
e.parameter.inputThree,
e.parameter.inputFour,
e.parameter.inputFive]);
sheet_counters.getRange("A2").setValue(id);
}