【问题标题】:Convert date object from Google sheets to Firebase timestamp将 Google 表格中的日期对象转换为 Firebase 时间戳
【发布时间】:2020-06-02 10:29:09
【问题描述】:

我在 Google 表格中有一个日期对象,我想将它作为时间戳对象导入到 firestore,但是当我直接执行时它不起作用。我正在使用 Google Apps 脚本。

这会在 firestore 中存储一个空地图:

 data.date = new Date();

如何将日期对象转换为时间戳。

这是我的完整代码

function uploadData() {
   var firestore = FirestoreApp.getFirestore (email, key, projectId);
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheetname = "Sheet1";
   var sheet = ss.getSheetByName(sheetname); 
   var sheetLR = sheet.getLastRow();
   var sheetLC = sheet.getLastColumn(); 
   var dataSR = 2; 
   var sourceRange = sheet.getRange(2,1,sheetLR-dataSR+1,sheetLC);
   var sourceData = sourceRange.getValues();
   var sourceLen = sourceData.length;

  // Loop through the rows
   for (var i=0;i<sourceLen;i++){
     if(sourceData[i][1] !== '') {
       var data = {};

       data.date = new Date(); //Want to convert this date to timestamp object for firestore
       data.time = sourceData[i][1];
       data.batch = sourceData[i][2];
       data.topic = sourceData[i][3];

       firestore.createDocument("classRoutine", data);
     }

  }
}

【问题讨论】:

  • 这可能对你有帮助:stackoverflow.com/questions/221294/…
  • 它可以工作但返回一个大整数作为firestore中的数据类型,我该如何更改它
  • 据我所见,通过查看库的code,您应该能够传递Date 对象。 dateSt 的值是多少?
  • 忘记 dateSt 变量。 new Date() 也不起作用,它应该返回当前日期。
  • @Nehal 你能告诉我你拥有的日期对象是这样的 3/2/2020 9:06:07 还是只有日期字段。

标签: firebase google-apps-script google-cloud-firestore google-sheets-api


【解决方案1】:

假设如果您的日期对象类似于 3/2/2020 9:06:07,那么您只需提取日期 2020-03-02对于该日期,如果您想获得时间戳 1583087400000,您可以尝试以下解决方案。

       var dateSt = sourceData[i][0].toString();
       var stDate = new Date(dateSt);
       var stringfied = JSON.stringify(stDate);
       var updatedDt = stringfied.slice(1,11);

       //now u will have the date as 2020-03-02

       var myDate= updatedDt;
       myDate=myDate.split("-");
       var formattedDate=myDate[0]+"/"+myDate[1]+"/"+myDate[2];

       //Now the date is converted to 2020/03/02 (it should be in YYYY/MM/DD)

       var timestamp = new Date(formattedDate).getTime();

       //Now will have the timestamp for that particular date as 1583087400000
       data.date = timestamp;

假设如果您的谷歌表格中没有日期,并且您想从应用脚本创建它,则意味着您可以尝试第二种解决方案

       var dateSt = new Date().toISOString().slice(0,10);
       //dateSt will have the date in 2020-06-04
       var myDate = dateSt;
       myDate = myDate.split("-");
       var formattedDate=myDate[0]+"/"+myDate[1]+"/"+myDate[2];
       //formatted date will be 2020/06/04
       var timestamp = new Date(formattedDate).getTime();
       //timeStamp will be 1591209000000
       data.date = timestamp;

【讨论】:

  • 这会将时间戳存储为整数,但我想将其保存为 firestore 的时间戳。
猜你喜欢
  • 2021-03-25
  • 1970-01-01
  • 2016-11-26
  • 2019-05-10
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 2020-06-28
  • 2019-02-25
相关资源
最近更新 更多