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

标签 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);
}

最佳答案

下面的示例脚本怎么样?该脚本假定 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);
}

关于javascript - 在第一个分隔符上拆分列并在分隔符 gs 脚本之前和之后输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48102050/

相关文章:

javascript - 使用 AppScript 回复 Gmail 中更改收件人的电子邮件最终进入新线程

javascript - 如何从 Google Sheet 下载具有特定边距和分页符的 PDF 文件?

arrays - 如何使用 IF 语句将值与 Google 表格中的数组进行比较

javascript - 如何记录301重定向URL?

javascript - 在计算表单中使用 .click 而不是 onClick

javascript - Google Apps 脚本中的 ng-Change 等价物

google-apps-script - 创建每秒运行的脚本

javascript - 从本地 .js 读取本地 .json 而不需要存储库

javascript - 如何禁用 puppeteer 中的缓存?

google-sheets - 谷歌电子表格直接下载链接只有一张 Excel 表格