清除Google表格中的格式

时间:2017-05-16 07:56:43

标签: google-apps-script google-sheets microsoft-flow

我有一个Microsoft Flow将数据发送到Google表格。当数据出现在工作表中时,一些单元格具有隐藏的撇号,这会阻止计算并阻止某些公式。

我有一个脚本,用数字格式化单元格,以便我可以运行计算。我无法做的是清除我要运行的单元格中的撇号= NOW(),以便我可以创建时间戳。

我创建了一个脚本,但我无法弄清楚如何让这个单元格做我想要的。

function setFormat(){SpreadsheetApp.getActiveSheet().getRange("A2:A").getValue().replace("'=NOW()","=NOW()");SpreadsheetApp.getActiveSheet().getRange("C2:C").setNumberFormat('000');SpreadsheetApp.getActiveSheet().getRange("D2:D").setNumberFormat('000');SpreadsheetApp.getActiveSheet().getRange("E2:E").setNumberFormat('000');SpreadsheetApp.getActiveSheet().getRange("F2:F").setNumberFormat('000');}`

format in cell

1 个答案:

答案 0 :(得分:1)

这个样本怎么样?

  1. 使用getValues(),检索“A2:A”的数据。 https://developers.google.com/apps-script/reference/spreadsheet/range#getvalues

  2. 从1检索的数据从'=NOW()转换为=NOW()

  3. 使用setFormulas(),转换后的数据将导入“A2:A”。 https://developers.google.com/apps-script/reference/spreadsheet/range#setformulasformulas

  4. setNumberFormat()适用于您的脚本。

  5. 示例脚本:

    function setFormat(){
      var ss = SpreadsheetApp.getActiveSheet();
      var Data = ss.getRange("A2:A").getValues();
      var replacedData = [[i[0].replace("'=NOW()","=NOW()")] for each (i in Data) if(i[0])];
      ss.getRange(2, 1, replacedData.length, replacedData[0].length).setFormulas(replacedData);
    
      ss.getRange("C2:C").setNumberFormat('000');
      ss.getRange("D2:D").setNumberFormat('000');
      ss.getRange("E2:E").setNumberFormat('000');
      ss.getRange("F2:F").setNumberFormat('000');
    }
    

    如果我误解了你的问题,我很抱歉。

    已添加1:

    作为公式的=NOW()的类型是对象。因此,通过比较类型,只有'=NOW()作为字符串转换为公式=NOW()。添加更多数据时,将转换添加的数据。

    function setFormat(){
      var ss = SpreadsheetApp.getActiveSheet();
      var Data = ss.getRange("A2:A").getValues();
      var replacedData = [typeof(i[0])=="object" ? ["=NOW()"] : [i[0].replace("'=NOW()","=NOW()")] for each (i in Data) if(i[0])];
      ss.getRange(2, 1, replacedData.length, replacedData[0].length).setFormulas(replacedData);
    
      ss.getRange("C2:C").setNumberFormat('000');
      ss.getRange("D2:D").setNumberFormat('000');
      ss.getRange("E2:E").setNumberFormat('000');
      ss.getRange("F2:F").setNumberFormat('000');
    }
    

    已添加2:

    此示例在导入新数据时将日期对象导入为字符串。

    function setFormat(){
      var ss = SpreadsheetApp.getActiveSheet();
      var Data = ss.getRange("A2:A").getValues();
      var replacedData = [
          typeof(i[0])=="object"
          ? [i[0]]
          : [i[0].replace("=NOW()", Utilities.formatDate(
            new Date(),
            Session.getScriptTimeZone(),
            'yyyy/M/d HH:mm:ss')
          )
        ]
        for each (i in Data) if(i[0])
      ];
      ss.getRange(2, 1, replacedData.length, replacedData[0].length).setValues(replacedData);
    
      ss.getRange("C2:C").setNumberFormat('000');
      ss.getRange("D2:D").setNumberFormat('000');
      ss.getRange("E2:E").setNumberFormat('000');
      ss.getRange("F2:F").setNumberFormat('000');
    }