导出具有 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");
}
我想将不同数据源的数据导出到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");
}