【问题标题】:Turn array of strings into array of dates in Google Apps Script在 Google Apps 脚本中将字符串数组转换为日期数组
【发布时间】:2014-07-26 07:31:46
【问题描述】:

我有一个 Google 表格电子表格。在 B 列中,我有一个字符串列表,它们是日期或日期范围,格式为月/日期。例如:

7/26
7/27-7/31
8/1
8/2
8/3-8/5

我想创建一个数组,左边是第一个日期,右边是第二个日期(如果有的话)。如果没有第二个日期,它可以留空。这就是我想要的:

[7/26,]
[7/27,7/31]
[8/1,]
[8/2,]
[8/3,8/5]

我试过了:

var r = 'B'
var dateString = sheet.getRange(dateColumns[r] + '1:' + dateColumns[r] + lastRow.toString()).getValues();
var dateArr = Utilities.parseCsv(dateString, '-');

但这只是不断连接所有值。此外,如果可以将输出以日期格式放置,那也很棒。

【问题讨论】:

    标签: arrays google-apps-script


    【解决方案1】:

    这是一个有趣的练习......

    这是一个你想要的代码:

    function test(){
      convertToDateArray('7/26,7/27-7/31,8/1,8/2,8/3-8/5');
    }
    
    function convertToDateArray(inputString){
      if(typeof(inputString)=='string'){inputString=inputString.split(',')}; // if input is a string then split it into an array using comma as separator
      var data = [];
      var datesArray = [];
      for(var n in inputString){
        if(inputString[n].indexOf('-')==-1){inputString[n]+='-'};// if only 1 field add an empty one
        data.push(inputString[n].split('-'));// make it an array
      }
      Logger.log(data);//check
      for(var n in data){
        var temp = [];
        for(var c in data[n]){
          Logger.log('data[n][c] = '+ data[n][c]);
          var date = data[n][c]!=''? new Date(2014,Number(data[n][c].split('/')[0])-1,Number(data[n][c].split('/')[1]),0,0,0,0) : '';// create date objects with right values
          Logger.log('date = '+date);//check
          temp.push(date);
        }
        datesArray.push(temp);//store output data in an array of arrays, ready to setValues in a SS
      }
      Logger.log(datesArray);
      var sh = SpreadsheetApp.getActive().getActiveSheet();
      sh.getRange(1,1,datesArray.length,datesArray[0].length).setValues(datesArray);
    }
    

    dateArray 的记录器结果:

    [[Sat Jul 26 00:00:00 GMT+02:00 2014, ], [Sun Jul 27 00:00:00 GMT+02:00 2014, Thu Jul 31 00:00:00 GMT+02:00 2014], [Fri Aug 01 00:00:00 GMT+02:00 2014, ], [Sat Aug 02 00:00:00 GMT+02:00 2014, ], [Sun Aug 03 00:00:00 GMT+02:00 2014, Tue Aug 05 00:00:00 GMT+02:00 2014]]
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 2020-06-27
    • 2018-04-13
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多