var SHEET_NAME = "orders";
var SCRIPT_PROP = PropertiesService.getScriptProperties();
function doGet(e){
return handleResponse(e);
}
function doPost(e){
return handleResponse(e);
}
function handleResponse(e) {
var lock = LockService.getPublicLock();
lock.waitLock(30000);
try {
var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
var sheet = doc.getSheetByName(SHEET_NAME);
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow()+1;
var row = [];
for (i in headers){
row.push(e.parameter[headers[i]]);
}
sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
return ContentService
.createTextOutput("success")
.setMimeType(ContentService.MimeType.JAVASCRIPT);
} catch(err){
return ContentService
.createTextOutput("error")
.setMimeType(ContentService.MimeType.JAVASCRIPT);
} finally {
lock.releaseLock();
}
}
function setup() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
SCRIPT_PROP.setProperty("key", doc.getId());
}
Bạn có thể dành chút thời gian xem giúp mình phần code trong file .gs
phía trên của mình chút được không? Vấn đề mình hiện đang vướng phải là:
-
Dù đã thêm dữ liệu thành công vào google sheet nhưng response trả về vẫn luôn báo lỗi như bên dưới. Như hình dưới là khi mình chạy hàm error
của $.ajax
để show ra:
-
Nhìn lại phần code trong .gs
thì mình chỉ nghĩ đơn giản là nếu insert data thành công rồi thì trả về "sucess"
, còn lỗi thì "error"
(Vì mình không cần dữ liệu phức tạp mà chỉ cần một thông báo đơn giản trả về như vậy nên phần return handleResponse
mình chỉ viết như vầy). Rất mong nhận được nhận xét từ bạn
Ps: Mình đã thử gọi 1 callback như cách bạn chỉ ở phía trên trong phần return của handleResponse nhưng giường như nó cũng ko thực hiện bởi lí do gì đó nên bạn đừng nghĩ là mình ko thử làm theo cách b hướng dẫn