猿问

将单元格视为数组

我有一些数据,我必须用它来创建一个 pdf。在原始数据的一个单元格中,有一个重量列表,例如 12.34kg、15.62kg、34.34kg。当我将它们写入另一张表以生成我的 pdf 时,我想将每个重量写入不同的单元格,一个在另一个单元格中,例如:单元格 C2 中的 12.34 千克,单元格 C3 中的 15.62 千克和单元格 C4 中的 34.34 千克。


我正在努力完成这项任务......我正在尝试执行但不起作用,setValues 方法存在问题......


function mySplit() { 

  var doc = SpreadsheetApp.getActive().getSheetByName("Sheet2"); 

  var cell = String(doc.getRange("J21").getValues()); 

  var array =[{}]; 

  array = cell.split(","); 

  for (var j = 0; j<= array1.length; j++)

  { 

    doc.getRange(21+j,10,1,1).setValues(array[0][j]);  

  } 

}


慕标5832272
浏览 129回答 2
2回答

智慧大石

问题:在您的代码中,您使用getValues()获取单个元素的值。在这种特定情况下,您应该改用getValue()&nbsp;。您不需要预定义array并且在您的代码中array1没有在任何地方定义。String()也是多余和错误的,在这种情况下,单元格值默认为字符串。解决方案:鉴于它12.34kg,15.62kg,34.34kg位于单元格J21上,以下脚本将分别填充12.34kg,15.62kg和单元格J21、J22和J2334.34kg中:function mySplit() {&nbsp;&nbsp;&nbsp;&nbsp; var doc = SpreadsheetApp.getActive().getSheetByName("Sheet2");&nbsp;&nbsp; var cell = doc.getRange("J21").getValue();&nbsp; var array = cell.split(",");&nbsp;&nbsp;&nbsp;&nbsp; for (var j = 0; j<= array.length; j++)&nbsp; {&nbsp; &nbsp; doc.getRange(21+j,10).setValue(array[j]);&nbsp;&nbsp;&nbsp; }&nbsp;}

富国沪深

虽然已经有解决您问题的答案,但不建议通过setValue(value)单独设置每个不同单元格的值,因为它效率低下。在可能的情况下,建议使用批处理操作一次写入所有单元格:setValues(values)可用于该操作(对于getValue()and也是如此getValues())。setValues(values)需要一个二维值数组,因此cell应将字符串转换为二维数组(其中外部数组指的是不同的行,内部数组元素指的是列)。您可以为此使用split()和map() :function mySplit() {&nbsp; &nbsp;&nbsp; var doc = SpreadsheetApp.getActive().getSheetByName("Sheet2");&nbsp;&nbsp; var cell = doc.getRange("J21").getValue();&nbsp; var array = cell.split(",").map(el => [el]);&nbsp; doc.getRange(21, 10, array.length, array[0].length).setValues(array);}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答