嗨大家,感覺這裡對使用google apps script(gas)的使用很少,我想要將我的一個頁面連接我的google sheet,所以我開始使用gas,在我的第一個版本中我要測試寫入,結果也很正確,但在發佈了第二個版本後,開始出現跨網域的問題,可是我完全沒有改到權限之類的...
請問大家有這樣的問題嗎?我也有試著用網路的解法將url
最後加入callback=?
但是沒有用,還是我有什麼地方沒有設定到嗎?
gs
function doGet(e) {
//接帶入值 轉為變數 - 可根據需求修改
var params = e.parameter;
switch (params.method) {
case 'write':
return 929;
write(params);
break;
case 'check':
check(params);
default:
break;
}
}
function check(params) {
var SpreadSheet = SpreadsheetApp.openById("myid");
//取得 第一個表單
var Sheet = SpreadSheet.getSheets()[0];
var limit = Sheet.getLastRow();
var matchList = Sheet.getRange("A2:A").getValues();
var keyword = 'perster';
for (var i = 0; i < limit; i++) {
if (matchList[i] == "perter") return ContentService.createTextOutput(i+3);
}
return ContentService.createTextOutput(false);
}
function write(params) {
var name = params.name;
var phone = params.phone;
var time = params.time;
var order = params.order;
var price = params.price;
//這是選擇這個google excel
var SpreadSheet = SpreadsheetApp.openById("myid");
//取得 第一個表單
var Sheet = SpreadSheet.getSheets()[0];
var LastRow = Sheet.getLastRow();
// 這邊是處理訂單編號 - 我先選取 有資料最後一行 的 第6欄
var range = Sheet.getRange(LastRow, 6);
// 創立訂單編號 (最後一行的第六欄 +1)
var orderNum = parseFloat(range.getValues() || 0) + 1;
//若最後一行是第1行 需要轉為訂單編號1
if (LastRow == 1) {
orderNum = 1;
}
//開始寫入資料 同樣是 getRange 選擇 (行,欄) setValue 帶入值name phone time order price values進來
Sheet.getRange(LastRow + 1, 1).setValue(name);
Sheet.getRange(LastRow + 1, 2).setValue(phone);
Sheet.getRange(LastRow + 1, 3).setValue(time);
Sheet.getRange(LastRow + 1, 4).setValue(order);
Sheet.getRange(LastRow + 1, 5).setValue(price);
Sheet.getRange(LastRow + 1, 6).setValue(orderNum);
//寫入結束後傳回true
return ContentService.createTextOutput(true);
}
js
$.ajax({
type: "get",
url: "https://script.google.com/macros/s/my_id/exec",
data: { keyword: 'perster', method: 'check' },
dataType: "JSON",
success: function (response) {
console.log('check key word', response);
}
});
錯誤
Failed to load https://script.google.com/macros/s/myidg58/exec?method=write&name=test1&phone=phone%20number%201&time=Tue%20Jul%2010%202018%2020%3A58%3A32%20GMT%2B1000%20(%E6%BE%B3%E6%B4%B2%E6%9D%B1%E9%83%A8%E6%A8%99%E6%BA%96%E6%99%82%E9%96%93)&order=order&price=price: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'my domain' is therefore not allowed access.