防止错误的日期到字符串转换

问题描述 投票:0回答:1

我是 AppScripts (JavaScript) 的新手。

我想自动化会计表。我在 A 列中有很多帐号和标题。为了仅保留帐号,我只想保留第一个字符为数字的值。 因此我使用这段代码:

[...]
for (var k = 0; k < values.length; k++) {
      var accountNumber= values[k][0].toString();
      
      if (!isNaN(parseInt(accountNumber[0], 10))) {
    
        var alreadyExists = allAccounts.some(function(existingValue) {
          return existingValue[0] === accountNumber;
        });

        if (!alreadyExists) {
          allAccounts.push([accountNumber, values[k][1]]);
        }
      }
    }
[...]

我的问题是有一个帐号“1217 10”,GoogleSheets 将其检测为日期。如果我将此行转换为字符串,它将转换为“Sun Sep 24 00:44:07 GMT+00:53 1217”。这显然不是我的本意。

有办法避免这种情况吗?

javascript google-apps-script google-sheets type-conversion
1个回答
0
投票

借助此代码,您可以修改代码以将整个列的格式设置为纯文本:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

var range = sheet.getRange("A:A");
range.setNumberFormat('@'); 

for (var k = 0; k < values.length; k++) {
  var accountNumber = values[k][0].toString();

  if (!isNaN(parseInt(accountNumber[0], 10))) {

    var alreadyExists = allAccounts.some(function(existingValue) {
      return existingValue[0] === accountNumber;
    });

    if (!alreadyExists) {
      allAccounts.push([accountNumber, values[k][1]]);
    }
  }
}

range.setNumberFormat('General');
© www.soinside.com 2019 - 2024. All rights reserved.