GAS / google表格是PHP / mySQL的另一种选择吗?

时间:2017-12-30 23:39:30

标签: html google-apps-script google-sheets

我一直在寻找引用google visualiser的论坛结果来显示我的查询结果。但它似乎只是将数据转储到预制表中。我还没有找到一种动态编写自定义表的方法。

过去,当我一起攻击PHP以使用mySQL DB时,我只需连接到我的数据库,运行查询到数组,然后遍历数组并用HTML编写表。我可以在中间对IF语句进行格式化或对显示的数据进行额外调整等。但是我很难找到如何在谷歌脚本中做类似的事情的文档。什么是等效的工作流程?有人能指点我一个教程,让我沿着这条路走下去吗?

我只想要一个带有文本框的简单HTML页面和提交按钮,该按钮在我的Google表格上运行查询(返回.gs文件),并在HTML页面上的表格中显示结果。

也许我的理解是GAS / google表格是PHP / mySQL的替代品,我可能会出错?我想用烤面包机而不是搅拌机做冰沙吗?

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:3)

欢迎大卫。鲁本是对的,发布你尝试过的一些代码真的很酷。但是我花了好几个月的时间来了解Apps-script,并喜欢分享我所知道的内容。有几种方法可以从Google表格中获取数据。对于GAS,有一份非常好的文件Spreadsheet Service。还有一个client API.

你提到的方法。我建议将传入的数据转换为JSON,以便您可以随意使用它。

未经身份验证的前端查询也是可能的。哪个需要将电子表格发布并设置为链接可以查看的任何人,并使用Google visualisation API

var sql = 'SELECT  A,B,C,D,E,F,G where A = true order by A DESC LIMIT 10 offset '
var queryString = encodeURIComponent(sql);
var query = new google.visualization.Query('https://docs.google.com/spreadsheets/d/'+ spreadsheetId +'/gviz/tq?tq=' + queryString);
query.send(handleSampleDataQueryResponse);


   function handleSampleDataQueryResponseTotal(responsetotal) {
      var myData = responsetotal.getDataTable();
      var myObject = JSON.parse(myData.toJSON());
      console.log(myObject)
   }

其他方法

在您的GAS后端中,这可以将列A到C中的所有数据作为数组数组([[row1],[row2],[row3]])获取。

 function getData(query){
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getSheetByName('Sheet1');
   var range = sheet.getRange('A1:C');
   var data = range.getValues();
   // return data after some query
 }

在您的GAS前端,这可以call to your backend

   var data = google.script.run.withSuccessHandler(success).getData(query);

   var success = (e) => {
     console.log(e)
   }

在您的GAS后端,这可以向您的工作表添加数据。客户端side API也将添加数据,但更复杂,需要身份验证。

 function getData(data){
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getSheetByName('Sheet1');
   var range = sheet.getRange('A1:C');
   var data = range.setValues([[row1],[row2],[row3]]);
   return 'success!'
 }

在您的GAS前端,这可以将数据发送到您的后端。

   var updateData = [[row1],[row2],[row3]]
   var data = google.script.run.withSuccessHandler(success).getData(updateData);

   var success = (e) => {
     console.log(e)
   }

<强>最后

或者您可以从工作表中获取JSON中的所有内容并在客户端中执行查询。如果您根据需要操作工作表中的数据,这样就可以了。这也需要发布电子表格并将其设置为链接可以查看的任何人。

var firstSheet = function(){
  var spreadsheetID = "SOME_ID";
  var url = "https://spreadsheets.google.com/feeds/list/" + spreadsheetID +"/1/public/values?alt=json";
  return new Promise((resolve,reject)=>{
    $.getJSON(url, (data)=>{
        let result = data.feed.entry
        resolve(result)
   });
  })
}

firstSheet().then(function(data){
  console.log(data)
})