Thêm dữ liệu vào bảng tính google bằng javascript

Các bước bên dưới đại khái theo http. // đường ray. com/blog/2015-05-28-từng-bước-thiết-lập-để-gửi-biểu-mẫu-dữ-liệu-đến-google-trang-tính/ 1. Thiết lập Google Trang tính (a) Truy cập https. //lái xe. Google. com, nhấp vào "MỚI" và chọn "Google Trang tính". (b) Đặt phần sau vào 7 ô đầu tiên trong hàng đầu tiên. Bạn có thể thay đổi tên và số lượng mục sau. Những tên này cần phải khớp với JavaScript của tệp Geogebra ở Bước 3. Ô đầu tiên được sử dụng để ghi dấu thời gian. Dấu thời gianidClassSố lớpx-tọa độy-tọa độ

2. Thiết lập Google Apps Script (a) Nhấp vào "Công cụ" và chọn "Trình chỉnh sửa tập lệnh. ". (b) Thay thế tập lệnh hiện có bằng tập lệnh sau (được sửa đổi từ https. // nghiền. diều hâu. info/2014/07/google-sheets-as-a-database-insert-with-apps-script-using-postget-methods-with-ajax-example/).  // 1. Enter sheet name where data is to be written below var SHEET_NAME = "Sheet1"; // 2. Run > setup // // 3. Publish > Deploy as web app // - enter Project Version name and click 'Save New Version' // - set security level and enable service (most likely execute as 'me' and access 'anyone, even anonymously) // // 4. Copy the 'Current web app URL' and post this in your form/script action // // 5. Insert column names on your destination sheet matching the parameter names of the data you are passing in (exactly matching case) var SCRIPT_PROP = PropertiesService.getScriptProperties(); // new property service // If you don't want to expose either GET or POST methods you can comment out the appropriate function function doGet(e){ return handleResponse(e); } function doPost(e){ return handleResponse(e); } function handleResponse(e) { Logger.log(e.parameter); // Google announced the LockService[1] // this prevents concurrent access overwritting data // [1] http://googleappsdeveloper.blogspot.co.uk/2011/10/concurrency-and-google-apps-script.html // we want a public lock, one that locks for all invocations var lock = LockService.getPublicLock(); lock.waitLock(30000); // wait 30 seconds before conceding defeat. try { // next set where we write the data - you could write to multiple/alternate destinations var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key")); var sheet = doc.getSheetByName(SHEET_NAME); // we'll assume header is in row 1 but you can override with header_row in GET/POST data var headRow = e.parameter.header_row || 1; var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; var nextRow = sheet.getLastRow()+1; // get next row var row = []; var output = ""; // loop through the header columns for (i in headers){ if (headers[i] == "Timestamp"){ // special case if you include a 'Timestamp' column row.push(new Date()); } else { // else use header name to get data row.push(e.parameter[headers[i]]); } } // more efficient to set values as [][] array than individually sheet.getRange(nextRow, 1, 1, row.length).setValues([row]); output = JSON.stringify({"result":"success", "row": nextRow}); if (e.parameter.callback){ // return jsonp success results return ContentService .createTextOutput(e.parameter.callback+"("+ output + ");") .setMimeType(ContentService.MimeType.JAVASCRIPT); } else{ // return jsonp success results return ContentService .createTextOutput(output) .setMimeType(ContentService.MimeType.JSON); } } catch(e){ output = JSON.stringify({"result":"error", "error": e}); if (e.parameter.callback){ // if error return this, again, in jsonp return ContentService .createTextOutput(e.parameter.callback+"("+ output + ");") .setMimeType(ContentService.MimeType.JAVASCRIPT); } else{ return ContentService .createTextOutput(output) .setMimeType(ContentService.MimeType.JSON); } } finally { //release lock lock.releaseLock(); } } function setup() { var doc = SpreadsheetApp.getActiveSpreadsheet(); SCRIPT_PROP.setProperty("key", doc.getId()); } (c) Sau đó, nhấp vào biểu tượng "Lưu" hoặc nhấp vào "Tệp", sau đó chọn "Lưu". (d) Nhấp vào "Chạy", sau đó chọn "thiết lập".  (e) Xuất hiện hộp thoại "Yêu cầu ủy quyền". Nhấp vào "Xem lại quyền". Nhấp vào "Cho phép" trong hộp thoại tiếp theo. (f) Nhấp vào "Xuất bản", sau đó chọn "Triển khai dưới dạng ứng dụng web. ". (g) Trong cửa sổ bật lên, chọn "Mới" trong "Phiên bản dự án. ", sau đó nhập nội dung nào đó về phiên bản này vào hộp văn bản bên dưới nó. Đối với "Thực thi ứng dụng dưới dạng. ", chọn tôi". Đối với "Ai có quyền truy cập vào ứng dụng. ", chọn "Bất kỳ ai, kể cả ẩn danh". Sau đó bấm vào "triển khai". (h) Sao chép "URL ứng dụng web hiện tại", e. g. thích https. //script. Google. com/macros/s/SOME_LONG_KEY_HERE/exec (i) Bạn có thể kiểm tra tập lệnh của mình bằng cách sao chép và dán URL, cộng với phần sau không có dấu ngoặc kép "?Name=test&Class=1A&Class%20Number=18&x-coord=1&y-coord=2&id= . g. thích https. //script. Google. com/macros/s/SOME_LONG_KEY_HERE/exec?Name=test&Class=1A&Class%20Number=18&x-coord=1&y-coord=2&id=app_001 Điều này về cơ bản sẽ gửi một yêu cầu GET với "Name" = test, Class = 1A, Class Number = 18 . Trang web sẽ hiển thị nội dung như "{"result". "thành công","hàng". 14}", có nghĩa là dữ liệu được thêm thành công vào hàng 14 của Google Trang tính và sau đó bạn kiểm tra Trang tính cho hàng mới này

3. Tạo ứng dụng geogebra để gửi dữ liệu lên Google Sheet (a) Bạn có thể tải xuống tệp geogebra ở trên hoặc tạo một tệp mới. Giả sử rằng bạn có một tệp địa lý và bạn muốn gửi tọa độ x, y của một điểm, cũng như lớp và số thứ tự của một học sinh. Giả sử rằng chúng được lưu trữ trong các biến ax, ay, class và classNum. (b) Tạo một nút mới. Nhấp chuột phải vào nó và chọn "Thuộc tính đối tượng. ". Chọn "Scripting", sau đó chọn "On Click". Sau đó dán như sau. var class0 = ggbApplet.getValueString("class"); // cannot name a variable as 'class' var classNum = ggbApplet.getValueString("classNum"); var ax = ggbApplet.getValue("ax"); var ay = ggbApplet.getValue("ay"); if (confirm("Confirm to submit?\nClass: " + class0 + ", class num: " + classNum + ", point A = ("+ax+", "+ay+")" )) { sendData(class0, classNum, ax, ay); }(c) Chọn "JavaScript" thay vì "Geogebra Script". Sau đó nhấp vào "OK". (d) Chọn "JavaScript toàn cầu". Sau đó dán đoạn mã sau. (Lưu ý rằng trong các dòng 7 đến 11, tên trong ngoặc kép, i. e. "id", "Class", "ClassNumber", "x-coord" và "y-coord" phải khớp chính xác (phân biệt chữ hoa chữ thường) với tên trong hàng tiêu đề của Google Trang tính, nếu không, những ô không khớp đó sẽ chứa . function sendData(class0, num, x, y) { var scriptURL = "https://script.google.com/macros/s/SOME_LONG_KEY/exec"; var app_name = "shortest distance"; if (num!=="") { // the name "id", "Class", "Class Number", "x-coord", "y-coord" must match the header row in the spreadsheet jQuery.ajax({url:scriptURL, data: { "id":app_name, "Class":class0, "Class Number":num, "x-coord":x, "y-coord":y }, dataType: "jsonp", // using jsonp to overcome the Same Origin Policy jsonp: "callback", success: function( response ) { if (response.result == "success"){ console.log("added to row " + response.row); alert("Successfully submitted"); } else{ alert("Error: " + response.result); } } }); } else { alert("Please input the class and class number");} } (e) Trong dòng thứ hai của mã, thay thế URL trong dấu ngoặc kép bằng URL có được ở bước 2(h). (f) Nhấp vào "OK". Sau đó đóng nó lại. (g) Nhấp vào "Tệp", sau đó chọn "Xuất" và chọn "Bảng tính động dưới dạng trang web", sau đó làm theo hướng dẫn để tải lên Geogebratube. Bây giờ bạn có thể thử bảng tính địa lý

Bạn có thể sử dụng JavaScript trong Google Trang tính không?

Google Spreadsheets giúp bạn dễ dàng định dạng dữ liệu của mình theo cách bạn muốn bằng cách sử dụng các hàm JavaScript tùy chỉnh .

Google Trang tính có thể lấy dữ liệu từ API không?

Sau khi bạn đã thiết lập kết nối API với Google Trang tính, hãy nhấp vào Lưu và chạy để tải dữ liệu vào bảng tính của bạn .

Google Trang tính có thể lấy dữ liệu từ cơ sở dữ liệu không?

Bạn có thể thêm mã để kéo và làm mới dữ liệu MySQL của mình trên Google Trang tính mỗi phút . Thao tác này sẽ tự động xóa dữ liệu hiện có trong trang tính bạn đã chọn và thay thế dữ liệu đó bằng dữ liệu cơ sở dữ liệu MySQL của bạn trong khi vẫn duy trì định dạng Google Trang tính mà bạn đã đặt.