导出具有 excel 关系的数据

export data with relations in excel

我想将不同数据源的数据导出到Excel。这也没有问题。但是我也想在这里输出关系。这不起作用,或者我不太明白这应该如何工作。

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

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

我看到应用制作工具有这样的功能,但很遗憾我不太明白它是如何工作的。

附上我的代码,这是服务器代码: 有人可以向我解释如何导出关系吗?提前谢谢你。

    //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;
} }

也许有几件事要看。当您在 table 中有大量数据并且与该数据有更多关系时,使用 appendRow() 写入工作表实际上会变得有些低效,您很可能会开始 运行 进入脚本执行限制.此外,您当前的脚本确实包含几行似乎不必要的代码,因此我将展示您修改过的代码,删除了不必要的行,并在我添加的行旁边加一个星号。另外,不要忘记释放您对记录的锁定最后。

    //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");
  }