Создать таблицу в Google Docs с помощью App Maker - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь создать таблицу в Google Документах, из таблицы в App Maker.Пока у меня есть:

function updateDoco() {  
var check = {};  
var projectItemQuery = app.models.ProjectItem.newQuery();
var values = projectItemQuery.run(); 
    values.forEach(function(item){
    if(!check.hasOwnProperty(item.Project)){
      check[item.Project] = true; 
var docId = agResponse.id;                 
var activityGuide = DocumentApp.openById(docId);
var actvityGuideBody = activityGuide.getBody();                  
for (var i = 0; i<values.length; i++) {
var name = values[i].Name;  
var docTitle = actvityGuideBody.insertParagraph(i, name); 
    docTitle.setHeading(DocumentApp.ParagraphHeading.HEADING1); 
}
var steps = app.models.Steps.newQuery();
var activity = steps.run();      
    activity.forEach(function(steps){
     if(!check.hasOwnProperty(steps.Function)){
         check[steps.Functions] = true; 
var table = actvityGuideBody.appendTable();
  for(var n=0; n<activity; n++){
    var step = activity[n].Step;
    var data = [n, step, ''];
    var tr = table.appendTableRow(data);
     }      
   }     
 });

doc.saveAndClose();   

Как мне получить результаты запроса в таблицу в документе Google?

Спасибо за любую помощь, которую вы можете оказать!

1 Ответ

0 голосов
/ 24 сентября 2018

Хорошо, вот моя лучшая попытка найти для вас решение.Я бы, конечно, предложил предварительно выбирать шаги ProjectItem вместо того, чтобы запускать отдельный запрос в цикле for.Однако оттуда с вашими правками кода это было несколько утрачено, если вы хотите иметь много таблиц в одном документе или иным образом.Однако вот потенциальное кодовое решение для вас:

function updateDoco() {
  var check = {};  
  var projectItemQuery = app.models.ProjectItem.newQuery();
  projectItemQuery.prefetch.Function._add(); //prefetch for project item to 
    function relation (many-to-many)
  projectItemQuery.prefetch.Function.Steps._add();  //prefetch for function 
    to steps relation (one-to-many)
  var values = projectItemQuery.run();

  for (var i in values) {
    if(!check.hasOwnProperty(values[i].Project)) {
      check[values[i].Project] = true;
    }
    var docId = agResponse.id;                 
    var activityGuide = DocumentApp.openById(docId);
    var activityGuideBody = activityGuide.getBody();

    var name = values[i].Name;  
    var docTitle = activityGuideBody.insertParagraph(i, name);
    docTitle.setHeading(DocumentApp.ParagraphHeading.HEADING1);

    var functions = values[i].Function;

    //loop to run through each function relation on your current ProjectItem
    for (var j in functions) {
      var rowsdata = [['Step','Description']];
      var steps = functions[j].Steps;
      //another loop to run through each step to function relation
      for (var k in steps) {
        rowsdata.push([steps[k].Step,steps[k].Description]);
      }
      activityGuideBody.appendTable(rowsdata);
    }
    doc.saveAndClose();
  }
}
...