【问题标题】:How to trim multiple cells in a spreadsheet using script?如何使用脚本修剪电子表格中的多个单元格?
【发布时间】:2016-11-27 20:58:30
【问题描述】:

我有一列来自 Forms 的评论:

'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)

我想只留下时间 - 没有开头的撇号和 cmets,所以字符 2-6 应该始终保留。我对脚本完全陌生,到目前为止,我只知道如何将列放入数组:

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

【问题讨论】:

    标签: google-apps-script scripting spreadsheet


    【解决方案1】:

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

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

    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]]
    

    【讨论】:

      【解决方案2】:

      不需要脚本。表单数据在输入时仍保留在表单中。编辑列中数据的脚本会改变这一点,以后对数据的编辑或重新导入可能会导致冲突。我发现将另一列用于修改后的数据会更好。考虑到这一点:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-25
        • 2016-07-22
        • 1970-01-01
        • 2018-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多