我想做一個可以將資料寫入google試算表的網頁,因為我完全沒接觸過程式設計這方面東西,所以都是照著網路上教學做,一開始我是用heml的form表單來傳送資料給GAS的doPost,但是form傳送後都會跳轉到另一個頁面,所以我想改用$.ajax來傳送post給GAS,但是試了好幾次ajax都只會執行到error,沒辦法傳送post給我的GAS...程式碼如下,還請高手指點。
GAS(我是看試算表內的A1有沒有填上數字來判斷有沒有成功):
function doPost(e){
var ss = SpreadsheetApp.getActiveSpreadsheet(),
sheet1 = ss.getSheetByName('工作表12');
sheet1.getRange('A1').setValue("12344564");
}
form的版本:
<html>
<head>
<title>...</title>
</head>
<body>
<form action="https://script.google.com/macros/s/AKfycbyXQuFLENXj8HtElwDdubrYmERKwTsn/exec"
method="post"><br />
<input type="submit" value="提交"/>
</form>
</body>
</html>
ajax:
ml>
<head>
<title>...</title>
</head>
<body>
<form action="https://script.google.com/macros/s/AKfycbyXQuFLENXj8HtElwDdubrYmERKwTsn/exec"
method="post" id="test"><br />
<button type="button" id="submitExample">提交
</button>
</form>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
var data_url ="https://script.google.com/macros/s/AKfycbyXQuFLENXj8HtElwDdubrYmERKwTsn3HCNbochxfo/exec";
$(document).ready(function(){
$("#submitExample").click(function(){
$.ajax({
url: data_url,
type: "POST",
success: function(){alert("新增資料成功!")},
error: function(){alert("失敗!")}
});
});
});
</script>
</body>
</html>
function doGet(e) {
var params = e.parameter;
var name = params.name;
var SpreadSheet = SpreadsheetApp.openById("AKfycbyXQuFLENXj8HtElwDdubrYmERKwTsn3HCNbochxfo");//請輸入自己的sheet id
var Sheet = SpreadSheet.getSheets()[0];
var LastRow = Sheet.getLastRow();
Sheet.getRange(LastRow+1, 1).setValue(name);
return ContentService.createTextOutput("成功");
}
$.ajax({
url: "https://script.google.com/macros/s/AKfycbyXQuFLENXj8HtElwDdubrYmERKwTsn3HCNbochxfo/exec",
data: {
"name": "123456",
},
success: function(response) {
alert("成功");
console.log(response);
},
error: function(){alert("失敗!")}
});
可以試看看這樣寫
google試算表要發佈到網路上
指令編輯器也需要發布網頁應用程式並給予權限
用FORM成不成功都會進入
https://script.google.com/macros/s/AKfycbyXQuFLENXj8HtElwDdubrYmERKwTsn3HCNbochxfo/exec
你的程式就會觸發運作,沒FORM直接手動進去是一樣的
我另外開了一個GAS,裡面照你打得,網址在這:https://script.google.com/macros/s/AKfycbxyM7JN_IvdHYj8a5IL6ePuhJrd0kmABPEgwcVPs4I/exec
單獨打開會顯示成功沒錯,但是用ajax一樣沒辦法傳data進去,只會跳出失敗!...
測試的試算表在這:https://docs.google.com/spreadsheets/d/1Dz3a1sHPLnE0c7-I8rNolFMijdIN91k9Cse8R6yHXTo/edit#gid=0
API上有CORS 代表你還沒給完整權限
我記得之前我是電腦跟手機都授權才通的
結果真的是權限的問題,真是太感謝你了!!