如何使用脚本修剪电子表格中的多个单元格?

时间:2016-11-27 20:58:30

标签: google-apps-script scripting spreadsheet

我有一段时间的评论表格:

'18:00 (pouze v lednu a únoru)
'19:00 (v lednu, únoru i březnu)
'19:00 (v lednu, únoru i březnu)
'18:30 (pouze v lednu a únoru)

我想只留下时间 - 开头没有撇号和评论,所以字符2-6应该始终保留。我是Scripts的新手,到目前为止我只想出了如何将列添加到数组中:

function cas() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var r=ss.getRange("'Odpovědi formuláře 1'!D2:D");
  var vlst=r.getValues();
}

2 个答案:

答案 0 :(得分:1)

以下脚本怎么样?您的数据位于D列中。顶部有撇号的数据不会显示在电子表格中。

enter image description here

时间和评论从表格中放入一个数组。

function cas() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var vlst = ss.getActiveSheet().getRange(2, 4, ss.getLastRow() - 2, 1).getValues(); // retrieving column D from your script
  var array = [];
  for (var i in vlst){
    var time = String(vlst[i]).match(/[0-9]{2}:[0-9]{2}/);
    var comment = String(vlst[i]).replace(new RegExp(time[0], "g"), "").match(new RegExp("\\((.+?)\\)"));  
    array.push([time[0], comment[1]]);
  }
}

>>> [[18:00, pouze v lednu a únoru], [19:00, v lednu, únoru i březnu], [19:00, v lednu, únoru i březnu], [18:30, pouze v lednu a únoru]]

答案 1 :(得分:1)

无需脚本。表单数据仍然是输入时的表单。编辑列中数据的脚本将更改此操作,稍后编辑或重新导入数据可能会导致冲突。我发现使用另一列来修改数据会更好。考虑到这一点:

如果您的数据位于A列中,请在要修改文本的列中使用此公式:

=ARRAYFORMULA(IF(ISTEXT( A2:A),  REGEXEXTRACT(A2:A,"(\d*:\d*)"), ))

ARRAYFORMULA使公式适用于列中的每个单元格。 IF()用于将公式应用于适当的行。 REGEXEXTRACT()从文本中提取时间。