Google Apps Script - 将电子表格中的数据附加到文档模板中的表格

Dav*_*ess 4 google-docs google-sheets google-apps-script

我正在尝试编写一个脚本,该脚本将从 google 表格中获取费用列表,并将它们附加到 google docs 模板中已经存在的表格中。目前我有这个(它说名字的原因是因为我正在用名字和年龄的虚拟数据进行测试):

function myFunction() {

  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet()

 var numRows = sheet.getLastRow()
 var numColumns = sheet.getLastColumn()

  var data = sheet.getRange(1, 1, numRows, numColumns).getValues()


var doc = DocumentApp.openById('13l6O8nmEZgJiZnzumWihsRVOZiq_8vUj6PtBtb9My_0')
var body = doc.getBody()
var tables = body.getTables()
var table = tables[1] 

  for (var i = 1; i < data.length; i++){
    var row = data[i]
    var name = row[0]
    var age = row[1]
    var state = row[2]
    var done = 'Done'
 //Check to see if line has already been processed or not
   if (!state){
     sheet.getRange(i + 1, 3).setValue(done)
     //Slices out the blank state value
     var slice = row.slice(0, numColumns-1)     
     table.appendTableRow(slice)
     }
   }
}
Run Code Online (Sandbox Code Playgroud)

这只是向文档添​​加了一个新表,但我找不到向现有数据表添加行的方法我可以每行添加一个单独的单元格,但这没有用,似乎不能/不了解 appendtoRow 指令的工作原理。关于如何最好地做到这一点的任何想法?

Ser*_*sas 6

要将一行添加到现有表中,您需要使用appendTableRow()然后将单元格添加到这个新添加的行中。

更改脚本的最后一部分,如下所示(确保您的表确实是自您使用以来文档中的第二个表var table = tables[1]

...
if (!state){
  sheet.getRange(i + 1, 3).setValue(done);
  //Slices out the blank state value
  var slice = row.slice(0, numColumns-1); 
  Logger.log(slice);
  var tableRow = table.appendTableRow();
  for(var n in slice){
    tableRow.appendTableCell(slice[n]);
  }
}
...
Run Code Online (Sandbox Code Playgroud)