如何使用Google App脚本从单独的数据构建日期?

时间:2019-12-23 16:08:53

标签: google-apps-script google-sheets

在我的第一张纸上,我有这个东西:

E21: 1 juin 2020
G21: 09
H21: h
I21: 02

我想在第一张纸上保留它,但在第二张纸上我想要这样:
B3:2020-06-01 09:02

我尝试:

// I recover my sheet
var ss_evenement = SpreadsheetApp.getActive().getSheetByName('Evenement');
// I get my date
var dateDebut = ss_evenement.getRange('E21').activate().getValue();
// I put my date in sting
var dateDebutSTR = dateDebut.toString();
// I found the day of my date : with getDay I have the day of the week
var jourDebut = dateDebutSTR.substring(8,10);
// I found the month
var moisDebut = dateDebut.getMonth().toString();
// I found the Year
var anneeDebut = dateDebut.getYear().toString();
// I read the hours  
var heureDebut = ss_evenement.getRange('G21').activate().getValue();
// I read the minutes
var minuteDebut = ss_evenement.getRange('I21').activate().getValue();
// I recreate my date
var dateheureDebut = new Date(anneeDebut, moisDebut, jourDebut, heureDebut, minuteDebut, "00", "00");


// I select the sheet to writing
var ss_calendrier  = SpreadsheetApp.getActive().getSheetByName('Calendrier');
// I write my new date in my new sheet
ss_calendrier.getRange('B4').activate().setValue(dateheureDebut);

在调试中,我有:

dateDebut->Date (541813791)->Thu Apr 02 2020 03:00:00 GMT-0400 (EDT)
dateDebutSTR->String->"Thu Apr 02 2020 03:00:00 GMT-0400 (EDT)"
jourDebut->String->"02"
moisDebut->String->"3"
anneeDebut->String->"2020"
heureDebut->String->"09"
minuteDebut->String->"02"
dateheureDebut->Date (541917478)->Thu Apr 02 2020 09:02:00 GMT-0400 (EDT)

事实上,在第二个文件中,我有:

01/06/2020 06:02

小时和格式不好。

2 个答案:

答案 0 :(得分:0)

尝试一下:

appsettings.json

答案 1 :(得分:0)

您可以使用方法getDisplayValue()获取工作表中显示的值。之后,更容易解析它并从其数据生成最终字符串。您可以在下面看到使用此技术的示例:

function copyDate() {
  var evenementSheet = SpreadsheetApp.getActive().getSheetByName('Evenement');
  var months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"];
  var dateValues = evenementSheet.getRange('B7').getDisplayValue().split(' ');
  var anne = dateValues[2];
  var jour = dateValues[0];
  var mois = months.indexOf(dateValues[1])+1;
  var heure = evenementSheet.getRange('G21').getDisplayValue();
  var minute = evenementSheet.getRange('I21').getDisplayValue();
  var result = Utilities.formatString('%s-%s-%s %s:%s',
                                      anne,
                                      mois.length > 1 ? mois : '0' + mois,
                                      jour.length > 1 ? jour : '0' + jour,
                                      heure,
                                      minute);
  var calendrierSheet  = SpreadsheetApp.getActive().getSheetByName('Calendrier');
  calendrierSheet.getRange('B4').setValue(result);
}