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

时间:2014-09-04 23:28:16

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

我正在尝试编写一个脚本,该脚本将从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)
     }
   }
}

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

1 个答案:

答案 0 :(得分:2)

要向现有表格添加行,您需要使用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]);
  }
}
...