如何使用Google表格中的数据将数组插入Google文档? 修改点:修改后的脚本:参考文献:

问题描述

我正在尝试从Google表格中提取一系列名称,并将其放入Google文档中。在电子表格中,姓氏(“ lastNames”)位于姓氏(“ firstNames”)之前,并且两者都是在单独的列中。我正在尝试将名字和名字一起放在我的文档中。

我使用了for循环将名字和姓氏放到一个数组中(“ fullNames”),该部分效果很好。当我使用Logger.log时,所有的名字和姓氏都放在一个数组中,每个全名都用一个公用名隔开,就像我希望的那样。

我不知道该怎么做,实际上是将这个新数组插入文档主体中。我正在使用appendTable方法,但是每次尝试出现以下错误:“参数(number [])与DocumentApp.Body.appendTable的方法签名不匹配。”

要真正将新数组放入Google文档中,我需要对代码进行哪些更改?

function namePusher() {

var ss = SpreadsheetApp.openById("1CHvnejDrrb9W5txeXVMXxBoVjLpvWSi40ehZkGZYjaY");
var lastNames = ss.getSheetByName("Campbell").getRange(2,2,18).getValues();
var firstNames = ss.getSheetByName("Campbell").getRange(2,3,18).getValues();
//Logger.log(firstNames);


var fullNames = [];

for(var i = 0; i < firstNames.length; i++){
  var nameConcat = firstNames[i] + " " + lastNames[i]
  fullNames.push(nameConcat);
}
//Logger.log(fullNames); 


var doc = DocumentApp.getActiveDocument().getBody(); 
doc.appendTable(fullNames);

  
}

解决方法

修改点:

  • 我认为您的问题有两个原因。
    1. getValues()检索的值是二维数组。
    2. data中的
    3. appendTable(data)必须是二维数组。
      • 在脚本中,fullNames是一维数组。这样,就会发生这种错误。
  • 在脚本中,使用2 getValues()在2列中检索值。在这种情况下,成本会变得有点高。您可以使用一个getValues()来检索值。

当这些要点反映到脚本中时,它如下所示。

修改后的脚本:

function namePusher() {
  var ss = SpreadsheetApp.openById("1CHvnejDrrb9W5txeXVMXxBoVjLpvWSi40ehZkGZYjaY");
  var values = ss.getSheetByName("Campbell").getRange("B2:C19").getValues();  // Modified
  var fullNames = [];
  for(var i = 0; i < values.length; i++){  // Modified
    var nameConcat = [values[i][1] + " " + values[i][0]];  // Modified
    fullNames.push(nameConcat);
  }
  var doc = DocumentApp.getActiveDocument().getBody();
  doc.appendTable(fullNames);
}

参考文献:

,

修复代码的一种简单方法是替换

fullNames.push(nameConcat);

作者

fullNames.push([nameConcat]);

脚本的问题是fullNames字符串数组,但是您应该传递 Array 字符串数组 >(或可能被强制转换为字符串的对象)。

基本演示

var data = [
  ['A','B','C'],[1,'Apple','Red'],[2,'Banana','Yellow']
];

function myFunction() {
  const doc = DocumentApp.getActiveDocument();
  const body = doc.getBody();
  body.appendTable(data);
}

Tanaike's answer所述,还有其他“改进机会”

  1. 减少对Google Apps脚本类和方法的调用次数
  2. 使用更好的方法来管理数组和连接字符串。