如何将Google Apps脚本中的HTML格式表格转换为文档?

时间:2015-11-04 21:45:17

标签: google-apps-script google-sheets google-docs

我正在尝试将脚本中的格式化表格添加到文档中。但是使用append.Paragraph只会将包含所有HTML标记的文本放入其中。理想情况下,目标是将表单提供给表单所在页面上的输出。但我从这里开始以为我可以从表单重定向到包含此文档的页面,并且做同样的事情。

function rowOf(team1, dataRange) {
 var ss = SpreadsheetApp.openById("1FyJm85IyKCMskYA4xM-Nj9TxiJt1Qorik7U1gDgbX4o");
 var sheet1 = ss.getSheetByName("Stats1");
 var dataRange = sheet1.getSheetValues(1,14,300,1);
 var dataRange2 = sheet1.getSheetValues(1,2,300,1);
 var ss1 = SpreadsheetApp.openById("1a19U4ifctLtvJTZGf4PcOAEHHvOpg-JP2OwoAw_xkl8");
 var sheet = ss1.getSheetByName("Form Responses 1");
 var data = sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn()).getValues();
 var email = data[0][2];
 var team1 = data[0][1];
 var magellan = data[0][3];
 var subject = team1 +" Team Stats";
 var outRow = null;
 var outRow2 = null;

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

  if (dataRange[i][0] == team1){

     outRow = i+1;

    }
  }

 var Header = sheet1.getRange('d1:y1').getValues();
 var u13gneongoalsg1 = sheet1.getRange(outRow,4).getValues();
 var u13gneonshotsg1 = sheet1.getRange(outRow,5).getValues();
 var u13gneontopg1 = sheet1.getRange(outRow,6).getValues();
 var u13gneontop1g1 = sheet1.getRange(outRow,7).getValues();
 var u13gneonfirstg1 = sheet1.getRange(outRow,8).getValues();
 var u13gneonpassesg1 = sheet1.getRange(outRow,9).getValues();
 var u13gneonpasscompg1 = sheet1.getRange(outRow,10).getValues();
 var u13gneonnumpassstringg1 = sheet1.getRange(outRow,11).getValues();
 var u13gneonavgpassstringg1 = sheet1.getRange(outRow,12).getValues();
 var u13gneonlongpassstringg1 = sheet1.getRange(outRow,13).getValues();
 var u13gneonogoalsg1 = sheet1.getRange(outRow,16).getValues();
 var u13gneonoshotsg1 = sheet1.getRange(outRow,17).getValues();
 var u13gneonotopg1 = sheet1.getRange(outRow,18).getValues();
 var u13gneonotop1g1 = sheet1.getRange(outRow,19).getValues();
 var u13gneonofirstg1 = sheet1.getRange(outRow,20).getValues();
 var u13gneonopassesg1 = sheet1.getRange(outRow,21).getValues();
 var u13gneonopasscompg1 = sheet1.getRange(outRow,22).getValues();
 var u13gneononumpassstringg1 = sheet1.getRange(outRow,23).getValues();
 var u13gneonoavgpassstringg1 = sheet1.getRange(outRow,24).getValues();
 var u13gneonolongpassstringg1 = sheet1.getRange(outRow,25).getValues();


  var message = '<HTML><BODY><p>';
 message +=   '<table border="1">';
 message +=   '<tr><td align="center"><b>U13G Neon</b></td><td align="center"><b>Game Totals</b></td><td align="center"><b>'+team1+ '</b></td></tr>';
 message +=   '<tr><td align="center">' +u13gneongoalsg1+ '</td><td align="center"><b>Goals</b></td><td align="center">' +u13gneonogoalsg1+ '</td></tr>';
 message +=   '<tr><td align="center">' +u13gneonshotsg1+ '</td><td align="center"><b>Shots</b></td><td align="center">' +u13gneonoshotsg1+ '</td></tr>';
 message +=   '<tr><td align="center">'+u13gneontopg1 +'</td><td align="center"><b>Time of Possession</b></td><td align="center">'+u13gneonotopg1 +'</td></tr>';
 message +=   '<tr><td align="center">'+u13gneontop1g1 +'</td><td align="center"><b>Time of Possession %</b></td><td align="center">'+u13gneonotop1g1 +'</td></tr>';
 message +=   '<tr><td align="center">'+u13gneonfirstg1 +'</td><td align="center"><b>First Touches</b></td><td align="center">'+u13gneonofirstg1 +'</td></tr>';
 message +=   '<tr><td align="center">'+u13gneonpassesg1 +'</td><td align="center"><b>Passes</b></td><td align="center">'+u13gneonopassesg1 +'</td></tr>';
 message +=   '<tr><td align="center">'+u13gneonpasscompg1 +'</td><td align="center"><b>Pass Completion %</b></td><td align="center">'+u13gneonopasscompg1 +'</td></tr>';
 message +=   '<tr><td align="center">'+u13gneonnumpassstringg1 +'</td><td align="center"><b>Number of Pass Strings</b></td><td align="center">'+u13gneononumpassstringg1 +'</td></tr>';
 message +=   '<tr><td align="center">'+u13gneonavgpassstringg1 +'</td><td align="center"><b>Average Pass String Length</b></td><td align="center">'+u13gneonoavgpassstringg1 +'</td></tr>';
 message +=   '<tr><td align="center">'+u13gneonlongpassstringg1 +'</td><td align="center"><b>Longest Pass String</b></td><td align="center">'+u13gneonolongpassstringg1 +'</td></tr>';
 message +=   '</table>';
 message +=   '</p><p>';
 message += '</body></HTML>';

 // MailApp.sendEmail(email, subject, "", {htmlBody: message});
 var doc = DocumentApp.openById("1vVxSXAOTApq3vV93Kxx-oylp3eew-a7295CVieDGpoU");
 var body = doc.getBody();
  body.clear();
  body.appendParagraph(message);
 return outRow;
 } 

1 个答案:

答案 0 :(得分:0)

很抱歉要说这个,但是你无法从这里到达那里。您没有将HTML表格放入文档中 - 您将未格式化的表格放入其中然后对其进行格式化。

我会将您表达的长期目标放在一边,只需专注于将电子表格的内容放入文档表格中。这可以通过body.appendTable(cells)完成 - 其中cells是一个二维数组值,例如您从Range.getValues()获取。

function appendTable( cells ) {
  var body = DocumentApp.getActiveDocument().getBody();
  body.appendTable(cells);
}

那里没有自定义格式,只有电子表格内容包含文档的默认格式&#34;普通文字&#34;样式。如果这不符合您的喜好,您现在可以浏览附加的表并使用DocumentApp方法对其进行格式化。

以下是将整张表复制到文档中的方法:

function demo() {
  var ssId = '--spreadsheet-id--';
  var sheet = SpreadsheetApp.openById(ssId).getSheets()[0];
  var inTable = sheet.getDataRange().getValues();    // 2D array of values

  appendTable(inTable);
}