Google表格脚本中的拆分和修剪列?

时间:2014-12-29 22:51:38

标签: google-apps-script google-sheets

我正在开发一个Google电子表格修改网络应用程序,目前有一列格式符合这样的值"#,name"我需要使用Google Scripts以编程方式将#和名称拆分为单独的列。结果来自Forms,这就是他们需要修改的原因。我有部分工作,但我仍然坚持如何让它完全工作。以下是我到目前为止所做的事情:

output = splitColumn(initialRange.getValues()); //Initial range is the column I"m working with
      m = 0;
      var ids= [];
      var names= [];
      for(k = 0; k <= output.length; k+=2)
      {
        ids[m] = output[k][0];
        m += 1;
      }
      m=0;
      for(n = 1; n < output.length; n+=2)
      {
        names[m] = output[n][0];
        m += 1;
      }

      schoolName = aSheet.getRange(2, i+2, aSheet.getLastRow());
      schoolName.setValue(names[0]);
      schoolIDs = aSheet.getRange(2, i+1, aSheet.getLastRow());
      schoolIDs.setValue(ids[0]);

...

function splitColumn(range) {
  var output = [];

  for(var i in range) {
    var split = range[i][0].split(",");
    if(split.length == 1) {
      output.push([split[0]]);
    } else {
      for(var j in split) {
        output.push([split[j]]);
      }
    }
  }
  return output;  
}

要查看我的总体目标,这两个屏幕截图应该显示出来。

表单中的原始电子表格: Original 电子表格的格式化版本: Formatted Version

要么修改我现有的代码以使其工作或建议采用不同的方法,我们将不胜感激。当前的问题实际上是设置值,因为它不像我正在使用的类型,并且拆分不会消除&#34;,&#34;之间的前一个空格。和#34;名称&#34;所以我的数组有[space] name otherpartofname。

2 个答案:

答案 0 :(得分:2)

有几种方法可以执行此操作但修改现有代码,您可以split()使用多个单个字符的字符串。无论你使用什么都被省略。

var split = range[i][0].split(', '); // including space
// ['10', 'Africa High School'] — no white space

其他选项可能是具有匹配组的正则表达式,例如/(\d{1,2}),\s([A-Z\s]),但在这里过于苛刻,但要了解这是否更频繁地成为工作模式是一件好事。

答案 1 :(得分:0)

您可以使用.trim删除字符串两端的空格。

Mozilla Documentation - trim

var numberToPush = split[0];
var trimmedNumber = numberToPush.trim();
output.push(trimmedNumber);