在第一个分隔符上拆分列并在分隔符gs脚本之前和之后输出

时间:2018-01-04 19:16:28

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

非常新的

单元格数据如下:

colx
aa, bbb
oue, hed, ono
hud

需要它成为:

colx              coly     colz
aa, bbb           aa       bbb
oue, hed, ono     oue      hed, ono
hud               hud

我需要在其第一个分隔符上拆分一列,然后在原始列右侧的下一列中回发第一部分(第一个分隔符之前的所有内容),并回发其余字符串(后面的所有内容)第一个分隔符)到原始列右侧的第二列

我在这里找到了SplitTheString函数: How do I split a string, breaking at a particular character?

我知道我的代码无法解决问题,特别是如何输出数据

由于

function splitColumn() {
 var range =getColRng("Elements","colx", 2)
 var values = range.getValues());

  for (var row in values[0]) {
      values[row][0] == SplitTheString(ResultStr);) 

 }
 range.setValues(values);
 }

助手功能:

 function SplitTheString(ResultStr) {
     if (ResultStr != null) {
         var SplitChars = ', ';
         if (ResultStr.indexOf(SplitChars) >= 0) {
            var DtlStr = ResultStr.split(SplitChars);
            var name  = DtlStr[0];
            var street = DtlStr[1];
        }
    }
}

function getColRng(shtName, cheader,startrow) {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
 var lc = sheet.getMaxColumns();
 var lr = sheet.getLastRow();
 var hn = HTN(shtName,cheader)
 return sheet.getRange(startrow, hn, lr);
}

1 个答案:

答案 0 :(得分:1)

以下示例脚本如何?该脚本假设A列中有数据。

示例脚本:

function splitColumn() {
  var ss = SpreadsheetApp.getActiveSheet()
  var range = ss.getRange(1, 1, ss.getLastRow(), 1);
  var values = range.getValues();
  var result = [];
  for (var i in values) {
    if (i == 0) {
      result.push([values[i][0], "coly", "colz"]);
    } else {
      var splitted = values[i][0].split(",");
      var others = splitted.slice(1, splitted.length).join(",");
      result.push([values[i][0], splitted[0], others]);
    }
  }
  ss.getRange(ss.getLastRow()+1, 1, result.length, result[0].length).setValues(result);
}

输入:

enter image description here

输出:

enter image description here

如果我误解了你的问题,请告诉我。我想修改。

编辑:

function splitColumn() {
  var ss = SpreadsheetApp.getActiveSheet();
  var range = ss.getRange(2, 1, ss.getLastRow(), 1);
  var values = range.getValues();
  var result = [];
  for (var i in values) {
    if (values[i][0]) {
      var splitted = values[i][0].split(",");
      var others = splitted.slice(1, splitted.length).join(",");
      result.push([splitted[0], others]);
    } else {
      result.push(["",""]);
    }
  }
  ss.getRange(2, 2, result.length, result[0].length).setValues(result);
}