Google bảo mật rất tốt, và rất khó có thể xâm nhập dữ liệu của nó, nếu làm được thì chỉ có sử dụng chính API của nó cung cấp. Tuy nhiên với Google Sheet thì nó có cung cấp một công cụ lệnh (Script) khá hay, có thể tạo ra URL tiếp nhận Request, do đó có thể dễ dàng lấy dữ liệu từ nơi khác truyền đến và thêm vào Sheet. Bây giờ hãy làm theo các bước dưới để tiến hành tạo ra các lệnh này nhé.

  1. Tạo và cấu hình Script trên Google SheetTại đây bạn tạo ra một tệp lệnh như sau.Dán đoạn Script này vào tệp lệnh.
    function doGet(e){
       return handleResponse(e);
    }
    var SHEET_NAME = "SCASH";
    var SCRIPT_PROP = PropertiesService.getScriptProperties(); // new property service
    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 headRow = e.parameter.header_row || 1;
          var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
          var nextRow = sheet.getLastRow()+1;
          var row = []; 
          for (i in headers){
              if (headers[i] == "Timestamp"){
                 row.push(new Date());
              } else {
                 row.push(e.parameter[headers[i]]);
              }
          }
          sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
          return ContentService.createTextOutput(JSON.stringify({"result":"success", "row": nextRow})).setMimeType(ContentService.MimeType.JSON);
      } catch(e){
         return ContentService.createTextOutput(JSON.stringify({"result":"error", "error": e})).setMimeType(ContentService.MimeType.JSON);
     } finally {
         lock.releaseLock();
     }
    }
    
    function setup() {
       var doc = SpreadsheetApp.getActiveSpreadsheet();
       SCRIPT_PROP.setProperty("key", doc.getId());
    }

    hoặc

    var sheetName = 'Sheet1'
        var scriptProp = PropertiesService.getScriptProperties()
    
        function intialSetup () {
          var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
          scriptProp.setProperty('key', activeSpreadsheet.getId())
        }
    
        function doPost (e) {
          var lock = LockService.getScriptLock()
          lock.tryLock(10000)
    
          try {
          var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
          var sheet = doc.getSheetByName(sheetName)
    
          var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
          var nextRow = sheet.getLastRow() + 1
    
          var newRow = headers.map(function(header) {
            return header === 'timestamp' ? new Date() : e.parameter[header]
          })
    
          sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
    
          return ContentService
            .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
            .setMimeType(ContentService.MimeType.JSON)
          }
    
          catch (e) {
          return ContentService
            .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
            .setMimeType(ContentService.MimeType.JSON)
          }
    
          finally {
          lock.releaseLock()
          }
        }
    

     

    Lưu ý là bạn phải đổi SHEET_NAME = “SCASH”; thành tên sheet cần lưu dữ liệu.

    Sau khi xong bạn nhấn Ctrl+S để lưu dự án này lại, sau đó tiến hành chạy hàm Setup() để cài đặt lệnh.Sau khi chạy hàm Setup mà không có lỗi gì thì tiến hành “Xuất bản”. Mình sẽ triển khai nó dưới dạng ứng dụng web.Sau khi nhấn triển khai dưới dạng Ứng dụng web, bạn phải chọn một tài khoảng Google để thực thi, có thể bị báo kém an toàn nhưng bạn yên tâm chấp nhận, vì đây là ứng dụng của bạn. Những dữ liệu thêm vào Sheet sẽ sử dụng tư cách là tài khoản đó. Bạn cũng nên để bất kỳ ai, kể cả ân danh để có thể truy cập sử dụng Ajax và nhấn cập nhật. Lưu ý hãy lưu lại URL ứng dụng nhé.