自动从 Google AppMaker 数据源导出数据
Export data from Google AppMaker Datasource automatically
有谁知道我们如何从 数据源 中 Google AppMaker 中的数据自动 生成报告 (例如在 12a.m. 处生成报告)而不是每次用户需要报告时手动单击部署中的导出数据。
我在 上看到过类似的内容,但也没有人尝试回答。
如果有人知道如何解决这个问题,我将不胜感激:)
这可以通过使用 Installable Triggers 来实现。
例如,您有一个包含三个字段的学生数据的模型;姓名(字符串)、年龄(数字)和年级(数字)。在服务器脚本上你可以这样写:
//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";
}
}
}
然后,为了delete/stop自动导出,如果你需要,你也可以在服务器脚本上写如下:
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";
}
- 您可以查看演示应用 right here。
- 对脚本属性服务的引用 is here。
- 对时区列表的引用is here。
希望对您有所帮助!
您似乎在寻找每日数据库备份。 App Maker Team recommends migrating apps to Cloud SQL 如果您到目前为止还没有这样做。一旦开始使用 Cloud SQL 作为数据后端,您就可以通过 Google Cloud Console 配置备份:
https://cloud.google.com/sql/docs/mysql/backup-recovery/backups
有谁知道我们如何从 数据源 中 Google AppMaker 中的数据自动 生成报告 (例如在 12a.m. 处生成报告)而不是每次用户需要报告时手动单击部署中的导出数据。
我在
如果有人知道如何解决这个问题,我将不胜感激:)
这可以通过使用 Installable Triggers 来实现。
例如,您有一个包含三个字段的学生数据的模型;姓名(字符串)、年龄(数字)和年级(数字)。在服务器脚本上你可以这样写:
//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";
}
}
}
然后,为了delete/stop自动导出,如果你需要,你也可以在服务器脚本上写如下:
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";
}
- 您可以查看演示应用 right here。
- 对脚本属性服务的引用 is here。
- 对时区列表的引用is here。
希望对您有所帮助!
您似乎在寻找每日数据库备份。 App Maker Team recommends migrating apps to Cloud SQL 如果您到目前为止还没有这样做。一旦开始使用 Cloud SQL 作为数据后端,您就可以通过 Google Cloud Console 配置备份: https://cloud.google.com/sql/docs/mysql/backup-recovery/backups