在Excel中导出具有关系的数据 [英] export data with relations in excel

查看:64
本文介绍了在Excel中导出具有关系的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将数据从不同的数据源导出到Excel.这也没有问题.但是我也想在这里输出关系.这是行不通的,或者我不太了解这应该如何工作.

I want to export data from different data sources to Excel. This also works without problems. But I also want to output the relations here. This doesn't work or I don't quite understand how this should work.

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

Example: I have a data source called Company and a data source called Software. These two tables are related (n-m) to each other.

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

Now I want to export these relations again.

我已经看到App Maker具有这样的功能,但是不幸的是,我不太了解它应该如何工作.

I have seen that App Maker has such a function, but unfortunately I don't quite understand how this should work.

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

Enclosed my code, this is the server code: Can someone explain to me how to export the relation? Thank you in advance.

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

推荐答案

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

A couple of things to look at maybe. When you have lots of data in a table and even more relations to that data then using appendRow() to write to sheets does in fact get somewhat inefficient and you may very well start running into script execution limits. Furthermore, your current script does include several lines of code that seem unnecessary, so I will present your code modified with unnecessary lines removed and will put a star next to lines I added in. Also, don't forget to release your lock on records at the end.

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

这篇关于在Excel中导出具有关系的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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