脚本“ setValues”方法将字符串解释为单元格中的数字

时间:2019-07-18 09:23:15

标签: google-apps-script google-sheets types

我一直在Google表格中通过方法getValuessetValues使用Apps脚本。数组中返回的值会被进一步处理,它们将是JS字符串,并在单元格中设置为Text。

使用setValues后,如果字符串允许,则将单元格内部的值解释为(特殊格式)数字,即使数组内部的值为JS字符串,单元格内部的值实际上也是数字。

我们可以通过脚本告诉我们这些字符串值在单元格中设置为“文本”吗?

以下测试代码初始化了一个字符串数组,但是当我检查ell值时,它们实际上是数字:

    function setValuesTest() {
      var LN_DEST = 11;
      var ss = SpreadsheetApp.getActive();
      var currentSheet = ss.getActiveSheet();

      var valuesAr = [];
      var setAr = [];

      valuesAr[0] = ['18:20', '3', '27/05/19', '27/5/2019', '01970123456'];
      valuesAr[1] = ['3.5', '3,5', '27/05/19', '2019/5/20', '01970123456'];
      valuesAr[2] = ['$3.5', '£3.5', '£2,5', '2,000,000', '2.000.000'];


      for (var i = 0; i < valuesAr.length; i++) {
        setAr[0] = valuesAr[i];
        currentSheet.getRange(LN_DEST + i, 1, 1, setAr[0].length).setValues(setAr);
      }

      ss.toast('Complete!', 'END', -1);
    }

我想在单元格中将这些值作为文本保留字面上的字符。因此,如果数组中有27/05/19,则文本27/10/19而不是数字,或者单元格文本01970123456而不是数字1970123456。如果可能的话,我宁愿避免使用“ ',因为我不确定进一步getValuesSetValues方法在单元格上的使用会产生什么影响。 (此行为的另一个缺点是,这种数据解释似乎取决于语言环境系统。)

1 个答案:

答案 0 :(得分:1)

  • 您要将这些值作为字符串放入电子表格。
  • 您不想在值的顶部使用单引号'来放置值。

如果我的理解正确,那么如何使用setNumberFormat()?请认为这只是几个答案之一。

修改后的脚本:

请按如下所示修改脚本。

从:
currentSheet.getRange(LN_DEST + i, 1, 1, setAr[0].length).setValues(setAr);
至:
currentSheet.getRange(LN_DEST + i, 1, 1, setAr[0].length).setNumberFormat("@").setValues(setAr);

参考文献:

如果我误解了您的问题,而这不是您想要的方向,我深表歉意。