Google app maker 在excel中导出具有关系的数据

Google app maker 在excel中导出具有关系的数据,google-app-maker,Google App Maker,我想将不同数据源的数据导出到Excel。这也没有问题。但我也想在这里输出关系。这不管用,或者我不太明白这应该怎么做 示例:我有一个名为Company的数据源和一个名为Software的数据源。这两个表相互关联(n-m) 现在我想再次导出这些关系 我见过AppMaker有这样一个功能,但不幸的是,我不太明白它应该如何工作 随信附上我的代码,这是服务器代码: 有人能给我解释一下如何导出这种关系吗?先谢谢你 //define function to do the data export fun

我想将不同数据源的数据导出到Excel。这也没有问题。但我也想在这里输出关系。这不管用,或者我不太明白这应该怎么做

示例:我有一个名为Company的数据源和一个名为Software的数据源。这两个表相互关联(n-m)

现在我想再次导出这些关系

我见过AppMaker有这样一个功能,但不幸的是,我不太明白它应该如何工作

随信附上我的代码,这是服务器代码: 有人能给我解释一下如何导出这种关系吗?先谢谢你

    //define function to do the data export
function ExportDaten(SoftwareUnternehmen) {
  //create sheet to populate data
  var fileName = new Date()+"Dienstleisterverzeichnis "; //file name
  var newExport = SpreadsheetApp.create(fileName); // create new spreadsheet
  var header = ["Name", "Vertragsgegenstand", "Ansprechpartner Dienstleister","Vertragseigner bzw. Verantwortlicher natGAS","Ansprechpartner natGAS","Verträge","App","AVV","NDA","letztes Projekt bzw. letzter Kontakt","Kreditor#","Kdnr beim Lieferanten","Klasse","ISO270001?","DSGVO Tätigkeit nach Verfahrensverzeichnis","Text AVV: Tätigkeit","Text AVV: Bewertung"]; //define header
  newExport.appendRow(header); // append header to spreadsheet

  //get all Unternehmen records
  var ds = app.models.Unternehmen.newQuery();
  var dssoftware = app.models.Software.newQuery();
  var allSoftware = dssoftware.run();
  var allUnternehmen = ds.run();
   // Sets a rollback point and starts a new transaction.
  app.transaction.cloudSql.start();

   // Locks all records that are read in the transaction until the end of the transaction.
  app.transaction.cloudSql.setLockOnRead(app.transaction.cloudSql.lockOnRead.UPDATE);


// Relation 
  var query = app.models.Unternehmen.newQuery();
  query.filters.Software._key._equals = SoftwareUnternehmen;

  var records = query.run();





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

    //get each student data
    var Unternehmen = allUnternehmen[i];
    var UnternehmenName =Unternehmen.Hersteller;
//  var UnternehmenVertragsgegenstand = Software.;
//  var UnternehmenAnsprechpartnerD =Unternehmen.Ansprechpartner_Dienstleister;
//  var UnternehmenVertragseigner =Unternehmen.Vertragseigner_Verantwortlicher_Unternehmen;
//  var UnternehmenAnsprechpartnerNG =Unternehmen.Ansprechpartner;
//  var UnternehmenVertraege =Unternehmen.Vertraege;
//  var UnternehmenApp =Unternehmen.App;
//  var UnternehmenAVV =Unternehmen.AVV;
//  var UnternehmenNDA =Unternehmen.NDA;
//  var UnternehmenProjekt =Unternehmen.letztes_Projekt_letzter_Kontakt;
//  var UnternehmenKreditor =Unternehmen.Kreditor;
//  var UnternehmenKdnr =Unternehmen.Kdnr;
//  var UnternehmenKlasse =Unternehmen.Klasse;
//  var UnternehmenISO270001 =Unternehmen.ISO270001;
//  var UnternehmenDSGVO =Unternehmen.DSGVO_Taetigkeit;
//  var UnternehmenText_AVV1 =Unternehmen.Text_AVV1;
//  var UnternehmenText_AVV2 =Unternehmen.Text_AVV2;


    for (var j= 0; j< allSoftware.length; j++) {
    var Software = allSoftware[j];
    var UnternehmenVertragsgegenstand = Software.Vertragsgegenstand;
    var UnternehmenAnsprechpartnerD =Software.AnSP_Lieferant;
    var UnternehmenVertragseigner =Software.Vetragseigner_Vertantwortlicher;
    var UnternehmenAnsprechpartnerNG =Software.Ansprechpartner;
    var UnternehmenVertraege =Software.Vertraege;
    var UnternehmenApp =Software.App;
    var UnternehmenAVV =Software.AVV;
    var UnternehmenNDA =Software.NDA;
    var UnternehmenProjekt =Software.letztes_Projekt;
    var UnternehmenKreditor =Software.Kreditor;
    var UnternehmenKdnr =Software.KDNR;
    var UnternehmenKlasse =Software.Klasse1;
    var UnternehmenISO270001 =Software.ISO270001;
    var UnternehmenDSGVO =Software.DSGVO_Taetigkeit;
    var UnternehmenText_AVV1 =Software.Text_AVV_Taetigkeit;
    var UnternehmenText_AVV2 =Software.Text_AVV_Bewertung;

    var newRow = [UnternehmenName, UnternehmenVertragsgegenstand, UnternehmenAnsprechpartnerD, UnternehmenVertragseigner, UnternehmenAnsprechpartnerNG, UnternehmenVertraege, UnternehmenApp, UnternehmenAVV, UnternehmenNDA, UnternehmenProjekt, UnternehmenKreditor, UnternehmenKdnr, UnternehmenKlasse, UnternehmenISO270001, UnternehmenDSGVO, UnternehmenText_AVV1, UnternehmenText_AVV2 ]; //save Unternehmensdaten in a row
    newExport.appendRow(newRow); //append Unternehmen data row to spreadsheet

  }

  console.log("Export fertig");
return records;
} }
//定义用于执行数据导出的函数
函数ExportDaten(软件卸载){
//创建工作表以填充数据
var fileName=new Date()+“Dienstleisterverzeichnis”;//文件名
var newExport=SpreadsheetApp.create(文件名);//创建新的电子表格
var标头=[“名称”、“Vertragsgegstand”、“Ansprechpartner Dienstleister”、“Vertragsegener bzw.Verantwortlicher natGAS”、“Ansprechpartner natGAS”、“Verträge”、“App”、“AVV”、“NDA”、“letztes项目bzw.letzter Kontakt”、“Kreditor#”、“Kdnr beim Lieferanten”、“Klasse”、“ISO270001?”、“DSGVO Tätiggeit nach Verfahrensverensverzeichis”、“文本AVV:Täätiggeit”,“Text AVV:Bewertung”];//定义标题
newExport.appendRow(标题);//将标题附加到电子表格
//获取所有未登录记录
var ds=app.models.Unternehmen.newQuery();
var dssoftware=app.models.Software.newQuery();
var allSoftware=dssoftware.run();
var allinternehmen=ds.run();
//设置回滚点并启动新事务。
app.transaction.cloudSql.start();
//锁定事务中读取的所有记录,直到事务结束。
app.transaction.cloudSql.setLockOnRead(app.transaction.cloudSql.lockOnRead.UPDATE);
//关系
var query=app.models.Unternehmen.newQuery();
query.filters.Software.\u key.\u等于=softwareunterneman;
var records=query.run();
对于(变量i=0;i
可能需要看几件事。当表中有大量数据,并且与这些数据有更多关系时,请使用appendRow()事实上,写工作表确实会变得有些低效,您很可能会开始遇到脚本执行限制。此外,您当前的脚本确实包含了几行似乎不必要的代码,因此我将在删除了不必要的行的情况下对您的代码进行修改,并在我添加的行旁边加上一个星号。此外,不要忘记o在结束时解除对记录的锁定

    //define function to do the data export
    function ExportDaten(SoftwareUnternehmen) {
      //create sheet to populate data
      var fileName = new Date()+"Dienstleisterverzeichnis "; //file name
      var newExport = SpreadsheetApp.create(fileName); // create new spreadsheet
      var header = ["Name", "Vertragsgegenstand", "Ansprechpartner Dienstleister","Vertragseigner bzw. Verantwortlicher natGAS","Ansprechpartner natGAS","Verträge","App","AVV","NDA","letztes Projekt bzw. letzter Kontakt","Kreditor#","Kdnr beim Lieferanten","Klasse","ISO270001?","DSGVO Tätigkeit nach Verfahrensverzeichnis","Text AVV: Tätigkeit","Text AVV: Bewertung"]; //define header
      newExport.appendRow(header); // append header to spreadsheet
      var data = []; //*

      //get all Unternehmen records
      var ds = app.models.Unternehmen.newQuery();
      ds.prefetch.Software._add(); //*
      var allUnternehmen = ds.run();
       // Sets a rollback point and starts a new transaction.
      app.transaction.cloudSql.start();

       // Locks all records that are read in the transaction until the end of the transaction.
      app.transaction.cloudSql.setLockOnRead(app.transaction.cloudSql.lockOnRead.UPDATE);

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

        //get each student data
        var Unternehmen = allUnternehmen[i];
        var UnternehmenName =Unternehmen.Hersteller;
        var allSoftware = Unternehmen.Software; //*

        for (var j= 0; j< allSoftware.length; j++) {
          var Software = allSoftware[j];
          var UnternehmenVertragsgegenstand = Software.Vertragsgegenstand;
          var UnternehmenAnsprechpartnerD =Software.AnSP_Lieferant;
          var UnternehmenVertragseigner =Software.Vetragseigner_Vertantwortlicher;
          var UnternehmenAnsprechpartnerNG =Software.Ansprechpartner;
          var UnternehmenVertraege =Software.Vertraege;
          var UnternehmenApp =Software.App;
          var UnternehmenAVV =Software.AVV;
          var UnternehmenNDA =Software.NDA;
          var UnternehmenProjekt =Software.letztes_Projekt;
          var UnternehmenKreditor =Software.Kreditor;
          var UnternehmenKdnr =Software.KDNR;
          var UnternehmenKlasse =Software.Klasse1;
          var UnternehmenISO270001 =Software.ISO270001;
          var UnternehmenDSGVO =Software.DSGVO_Taetigkeit;
          var UnternehmenText_AVV1 =Software.Text_AVV_Taetigkeit;
          var UnternehmenText_AVV2 =Software.Text_AVV_Bewertung;

          var newRow = [UnternehmenName, UnternehmenVertragsgegenstand, UnternehmenAnsprechpartnerD, UnternehmenVertragseigner, UnternehmenAnsprechpartnerNG, UnternehmenVertraege, UnternehmenApp, UnternehmenAVV, UnternehmenNDA, UnternehmenProjekt, UnternehmenKreditor, UnternehmenKdnr, UnternehmenKlasse, UnternehmenISO270001, UnternehmenDSGVO, UnternehmenText_AVV1, UnternehmenText_AVV2 ]; //save Unternehmensdaten in a row
          data.push(newRow); //*

        }

      //console.log("Export fertig");
    }
    newExport.getActiveSheet().getRange(2,1,data.length,header.length).setValues(data); //*
    console.log("Export fertig");
  }
//定义用于执行数据导出的函数
函数ExportDaten(软件卸载){
//创建工作表以填充数据
var fileName=new Date()+“Dienstleisterverzeichnis”;//文件名
var newExport=SpreadsheetApp.create(文件名);//创建新的电子表格
var标头=[“名称”、“Vertragsgegenstand”、“Ansprechpartner Dienstleister”、“Vertragsegener bzw.Verantwortlicher natGAS”、“Ansprechpartner natGAS”、“Verträge”、“App”、“AVV”、“NDA”、“letztes Projekt bzw.letzter Kontakt”、“Kreditor”、“Kdnr beim Lieferanten”、“Klasse”、“ISO270001?”、“DSGVO Tätiggeit nach Verfahrensverzeichis”、“文本AVV:Tätiggeit”、”文本AVV:Bewertung“];//定义标题
newExport.appendRow(标题);//将标题附加到电子表格
var数据=[]//*
//获取所有未登录记录
var ds=app.models.Unternehmen.newQuery();
ds.prefetch.Softwa