Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将拆分的Google电子表格单元格值推送到相邻单元格_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何将拆分的Google电子表格单元格值推送到相邻单元格

Javascript 如何将拆分的Google电子表格单元格值推送到相邻单元格,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我使用的是马丁·霍克西(Martin Hawksey)的谷歌应用程序脚本的修改版本,该脚本将我的一张工作表中的数据记录在谷歌电子表格中,另一张工作表为我的“事件描述”列中的每个条目创建新行(以逗号分隔,即单元格D2=“描述1、描述2、描述3等)。虽然这很有效,但我希望它能再执行一个功能-我希望它能获取事件描述中的最后一个条目(可能用分号而不是逗号与其他条目分开)并在删除分号或其他分隔符的同时,为每个唯一事件将其推入相邻单元格一次且仅一次。我尝试了许多方法,但由于不熟悉谷歌应用程序脚本,我没有成功

我使用的是马丁·霍克西(Martin Hawksey)的谷歌应用程序脚本的修改版本,该脚本将我的一张工作表中的数据记录在谷歌电子表格中,另一张工作表为我的“事件描述”列中的每个条目创建新行(以逗号分隔,即单元格D2=“描述1、描述2、描述3等)。虽然这很有效,但我希望它能再执行一个功能-我希望它能获取事件描述中的最后一个条目(可能用分号而不是逗号与其他条目分开)并在删除分号或其他分隔符的同时,为每个唯一事件将其推入相邻单元格一次且仅一次。我尝试了许多方法,但由于不熟悉谷歌应用程序脚本,我没有成功

function splitColumnAndRepeatRows(anArray, splitColumnIndex) {
  var output = [];
  for (i in anArray){ // for each row
    var splitArray = anArray[i][splitColumnIndex].toString().split(","); // split values in specified column
    for (j in splitArray){ // for each split cell value
      if(splitArray[j]=="" && j>=1)
        continue;
      var row = anArray[i].slice(0); // take a copy of source row
      row[splitColumnIndex] = alltrim(splitArray[j]); // replace comma separated value with current split value
      output.push(row); // push new row to output
    }
  }
  return output;
}

function alltrim(str) {
  return str.replace(/^\s+|\s+$/g, '');
}
本质上,这就是我要做的-扭转这一局面:

Date     Client     County     Description
9/21/14  12345      Greene     Location 1, Location 2, Location 3; Y
9/24/14  54321      Brown      Location 1, Location 2; X
为此:

Date     Client     County     Description     Time
9/21/14  12345      Greene     Location 1
9/21/14  12345      Greene     Location 2
9/21/14  12345      Greene     Location 3      Y
9/24/14  54321      Brown      Location 1
9/24/14  54321      Brown      Location 2      X
任何帮助都将不胜感激


谢谢!

此已编辑的splitColumnAndRepeatRows()函数将完成您所需的操作,另外,您的列中的任何(而不仅仅是最后一个)逗号分隔的项都可以是一个以;-分隔的列表,并将分隔为两个单元格

function splitColumnAndRepeatRows(anArray, splitColumnIndex) {
  var output = [];
  for (var i in anArray){ // for each row
    var splitArray = anArray[i][splitColumnIndex].toString().split(","); // split values in specified column
    for (var j in splitArray){ // for each split cell value
      if(splitArray[j]=="" && j>=1)
        continue;
      var row = anArray[i].slice(0); // take a copy of source row
      var trimmedString = alltrim(splitArray[j]);
      var subArray = trimmedString.split(";"); // split current item of specified column at ; 
      if ( subArray.length > 1 ) { // if current item is a ;-delimited list (now split into an array)
        row[splitColumnIndex] = alltrim(subArray[0]); // replace comma-separated value with first item of ;-delimited array
        row[splitColumnIndex+1] = alltrim(subArray[1]); // append second item of ;-delimited list as new cell to row
      }
      else {
        row[splitColumnIndex] = trimmedString; // replace comma separated value with current split value
        row[splitColumnIndex+1] = ""; // append empty cell to row
      }
      output.push(row); // push new row to output
    }
  }
  return output;
}
它可以改变如下情况:

9/21/14  12345      Greene     Location 1; A, Location 2, Location 3; B
9/24/14  54321      Brown      Location 1, Location 2; C
为此:

9/21/14  12345      Greene     Location 1      A
9/21/14  12345      Greene     Location 2
9/21/14  12345      Greene     Location 3      B
9/24/14  54321      Brown      Location 1
9/24/14  54321      Brown      Location 2      C

非常有魅力!非常感谢你的帮助!