自动从Google AppMaker Datasource导出数据 [英] Export data from Google AppMaker Datasource automatically

查看:120
本文介绍了自动从Google AppMaker Datasource导出数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人知道我们如何生成报告来自Google AppMaker中数据源中的数据 例如在12a创建报告。 m。)而不是每次用户需要报告时手动单击部署中的导出数据。

Does anyone know how we can generate report from data in datasource in Google AppMaker automatically (e.g generate report at 12a.m.) instead of manually click export data in deployments every time user need the report.

我在从Google AppMaker导出数据但也没有人试图回答这个问题。

I have seen something similar on Exporting data out of Google AppMaker but also no one tried to answer that.

如果有人知道如何解决这个问题,我真的很感激:)

Really appreciate if there is anyone who know how to solve this :)

推荐答案

这可以通过使用可安装的触发器

比如说,你有一个模型,学生数据有三个字段;姓名(字符串),年龄(人数)和年级(人数)。在服务器脚本上,您可以编写如下内容:

Say for example, you have a model with students data that has three fields; name(string), age(number) and grade(number). On the server script you can write something like this:

//define function to do the data export
function dataExport() {

  //create sheet to populate data
  var fileName = "Students List " + new Date(); //define file name
  var newExport = SpreadsheetApp.create(fileName); // create new spreadsheet
  var header = ["Name", "Age", "Grade"]; //define header
  newExport.appendRow(header); // append header to spreadsheet

  //get all students records
  var ds = app.models.students.newQuery();
  var allStudents = ds.run();

  for(var i=0; i< allStudents.length; i++) {

    //get each student data
    var student = allStudents[i];
    var studentName = student.name;
    var studentAge = student.age;
    var studentGrade = student.grade;

    var newRow = [studentName, studentAge, studentGrade]; //save studen data in a row
    newExport.appendRow(newRow); //append student data row to spreadsheet

  }

  console.log("Finished Exporting Student Data");

}

//invoke function to set up the auto export
function exportData(){

  //check if there is an existing trigger for this process
  var existingTrigger = PropertiesService.getScriptProperties().getProperty("autoExportTrigger");

  //if the trigger already exists, inform user about it
  if(existingTrigger) {

    return "Auto export is already set"; 

  } else { // if the trigger does not exists, continue to set the trigger to auto export data

    //runs the script every day at 1am on the time zone specified
    var newTrigger = ScriptApp.newTrigger('dataExport')
    .timeBased()
    .atHour(1)
    .everyDays(1)
    .inTimezone("America/Chicago")
    .create();

    var triggerId = newTrigger.getUniqueId(); 

    if(triggerId) {
      PropertiesService.getScriptProperties().setProperty("autoExportTrigger", triggerId);
      return "Auto export has been set successfully!";
    } else {
      return "Failed to set auto export. Try again please"; 
    }

  }

}

然后,要删除/停止自动导出,如果需要,您也可以在服务器脚本上编写以下内容:

Then, to delete/stop the auto export, in case you need to, you can write the following on the server script too:

function deleteTrigger() {

  //get the current auto export trigger id
  var triggerId = PropertiesService.getScriptProperties().getProperty("autoExportTrigger");

  //get all triggers
  var allTriggers = ScriptApp.getProjectTriggers();

  //loop over all triggers.
  for (var i = 0; i < allTriggers.length; i++) {

    // If the current trigger is the correct one, delete it.
    if (allTriggers[i].getUniqueId() === triggerId) {

      ScriptApp.deleteTrigger(allTriggers[i]);
      break;

      //else delete all the triggers found  
    } else {

      ScriptApp.deleteTrigger(allTriggers[i]);

    }

  }

  PropertiesService.getScriptProperties().deleteProperty("autoExportTrigger");
  return "Auto export has been cancelled";

}




  • 您可以查看演示应用此处

  • 对脚本属性服务的引用在这里

  • 对时区的列表就在这里

    • You can check the demo app right here.
    • The reference to the script properties service is here.
    • The reference to the Time Zones list is here.
    • 我希望这有帮助!

      这篇关于自动从Google AppMaker Datasource导出数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆