Google apps script TypeError:无法读取属性";“长度”;来自未定义的表单脚本

Google apps script TypeError:无法读取属性";“长度”;来自未定义的表单脚本,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在尝试复制中使用的脚本 目标是将数据按“,”拆分的单元格拆分为多行,维护行中相应列的数据 在运行脚本时,我不断遇到以下错误: TypeError:无法从undefined中读取属性“length”。(第6行,文件“代码”) 功能结果(范围){ 分隔符=“,” targetColumn=1 变量输出2=[]; 对于(var i=0,iLen=range.length;i我认为这是您正在尝试完成的事情,因此这个简单的示例可能会有所帮助。函数查看第4列,将逗号分隔的值拆分为数组tA,然后为每个值创

我正在尝试复制中使用的脚本 目标是将数据按“,”拆分的单元格拆分为多行,维护行中相应列的数据

在运行脚本时,我不断遇到以下错误:

TypeError:无法从undefined中读取属性“length”。(第6行,文件“代码”)

功能结果(范围){
分隔符=“,”
targetColumn=1
变量输出2=[];

对于(var i=0,iLen=range.length;i我认为这是您正在尝试完成的事情,因此这个简单的示例可能会有所帮助。函数查看第4列,将逗号分隔的值拆分为数组tA,然后为每个值创建一行,其他列中的值相同

以下是运行前的数据:

以下是我运行后的数据:

这是我的代码:

function splitDataIntoSeparateRows() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  for(var i=0;i<vA.length;i++){
    var tA=vA[i][3].split(',');
    if(tA.length>1){
      for(var j=0;j<tA.length;j++){
        var vB=[vA[i][0],vA[i][1],vA[i][2],tA[j]];
        if(j==0){
          vA.splice(i + j,1,vB);
        }else{
          vA.splice(i + j,0,vB);
        }
      }
    }
  }
  sh.clearContents();
  sh.getRange(1,1,vA.length,vA[0].length).setValues(vA);
}
函数将数据拆分为单独的行(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var rg=sh.getDataRange();
var vA=rg.getValues();
对于(var i=0;i1){

对于(var j=0;j
kLen=range[0]。长度
不是正确的方法。定义
range
的位置在哪里?老实说,我不是一个编码员。我从另一篇文章中复制了这个脚本,没有从原始海报中得到响应。我相信范围将在实际的表单中定义,我将使用=result(range)。这对原始海报有效,但它是一篇旧帖子。我猜从那时起,工作表脚本发生了一些变化。我发现,即使原始脚本在脚本编辑器中运行时出现错误,但在工作表中保存和使用时仍能正常工作。我没有意识到这是可能的。总之,一切都很好。谢谢啊!
function splitDataIntoSeparateRows() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  for(var i=0;i<vA.length;i++){
    var tA=vA[i][3].split(',');
    if(tA.length>1){
      for(var j=0;j<tA.length;j++){
        var vB=[vA[i][0],vA[i][1],vA[i][2],tA[j]];
        if(j==0){
          vA.splice(i + j,1,vB);
        }else{
          vA.splice(i + j,0,vB);
        }
      }
    }
  }
  sh.clearContents();
  sh.getRange(1,1,vA.length,vA[0].length).setValues(vA);
}