【问题标题】:How to convert Date (from google sheet data) to TimeStamp (Firestore) using AppScript?如何使用 AppScript 将日期(从谷歌表数据)转换为时间戳(Firestore)?
【发布时间】:2020-09-18 15:28:57
【问题描述】:

我在 Google Sheet 中有一个日期对象,我想将它作为时间戳对象导入到 Firestore,但是当我直接执行时它不起作用。

如果我输入当前日期,

 data.date = new Date(dateSt);

它将一个空的地图对象存储在 Firestore 中。

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

完整代码:

function classRoutineFunction() {
   const email = "my_email";
   const key = "my_private_key";
   const projectId = "my_projectID";
   var firestore = FirestoreApp.getFirestore (email, key, projectId);


  // get document data from ther spreadsheet
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheetname = "Sheet1";
   var sheet = ss.getSheetByName(sheetname); 
   // get the last row and column in order to define range
   var sheetLR = sheet.getLastRow(); // get the last row
   var sheetLC = sheet.getLastColumn(); // get the last column

   var dataSR = 2; // the first row of data
   // define the data range
   var sourceRange = sheet.getRange(2,1,sheetLR-dataSR+1,sheetLC);

   // get the data
   var sourceData = sourceRange.getValues();
   // get the number of length of the object in order to establish a loop value
   var sourceLen = sourceData.length;

  // Loop through the rows
   for (var i=0;i<sourceLen;i++){
     if(sourceData[i][1] !== '') {
       var data = {};
       var dateSt = sourceData[i][0].toString();
       var stDate = new Date(dateSt);
       var stringfied = JSON.stringify(stDate);
       var updatedDt = stringfied.slice(1,11);

       data.date = new Date(dateSt);
       data.time = sourceData[i][1];
       data.batch = sourceData[i][2];
       data.topic = sourceData[i][3];

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

  }
}

【问题讨论】:

  • 为什么要标记 Excel?你在用 excel 工作吗?
  • 我正在使用 Google 表格,抱歉出现错误

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


【解决方案1】:

如果您使用“graham”的库 1VUSl4b1r1eoNcRWotZM3e87ygkxvXltOgyDZhixqncz9lQ3MjfT1iKFw 为我使用版本 30 时,该错误已修复。

【讨论】:

    【解决方案2】:

    确保您的日期值是 dates 而不是 String。 使用 DATEVALUE 将字符串转换为 FirestoreApp 可以解释为时间戳的日期。

    奖励: 如果您使用=DATEVALUE('2020-07-11') + TIMEVALUE('18:00:00),它会将时间添加到 Firestore 中的时间戳。

    【讨论】:

    • 由于某种原因,当您使用该库时它不起作用。但是,如果您将库复制并粘贴到您的项目中并从那里运行它,它就可以工作(或者至少它对我有用)。不要问我为什么:'D
    • 请注意,您应该传递原始值(无需修改),如下所示:data.date = sourceData[i][0];
    • 是的,我使用的是原始值,没有修改,仍然不起作用。谢谢你的回答
    • DATEVALUE 未定义..?请任何答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-08-10
    • 2021-10-18
    • 2019-09-13
    • 2019-05-10
    • 2018-12-09
    • 2020-02-23
    • 2012-03-23
    相关资源
    最近更新 更多