firebase - 如何在使用 IMPORTRANGE 的 Google 表格中将持续时间转换为秒

标签 firebase google-apps-script google-sheets google-cloud-firestore google-sheets-formula

我已使用以下查询将数据从 Googlesheet1 复制到 Googlesheet2

=IMPORTRANGE("url","!A2:H")

这已将数据从 Googlesheet1 复制到 Googlesheet2。

在那张表中,我有一个如下图所示的持续时间列

enter image description here

当我使用应用程序脚本将数据复制到 firestore 而不是保存持续时间时,它会以 DateTime 格式保存数据,如下所示。 enter image description here

有没有办法将给定的持续时间转换为 Google 表格中的秒数。

我尝试使用 =value(G2*24*3600) 但它在 Googlesheet2 中不起作用,因为该工作表是 Googlesheet1 的克隆

应用程序脚本逻辑:

function firestore() {
   // Firestore setup
   const email = "//client-email";
   const key = "//client-key";
   const projectId = "timesheet-aog";
   var firestore = FirestoreApp.getFirestore (email, key, projectId);

   // get document data from ther spreadsheet
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheetname = "timesheet";
   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;

   console.log('sourceLen is', sourceLen);
   // Loop through the rows
   for (var i=0;i<sourceLen;i++){

     var data = {};

     console.log('data is', sourceData);

     data.date = sourceData[i][0];
     data.name = sourceData[i][1];
     data.workFrom = sourceData[i][2];
     data.project = sourceData[i][3];
     data.phase = sourceData[i][4];
     data.task = sourceData[i][5];
     data.totalHrs = sourceData[i][6];
     data.comments = sourceData[i][7];

   firestore.createDocument("timesheet",data);

  }

}

最佳答案

以下是第二个工作表的 A1 单元格的公式:

={
  IMPORTRANGE("url","!A2:F"),
  ARRAYFORMULA(
    IF(
      IMPORTRANGE("url","!G2:G") = "",
        "",
        N(IMPORTRANGE("url","!G2:G")) * 24 * 3600
    )
  ),
  IMPORTRANGE("url","!H2:H")
} 

尝试在原始工作表中使用列的命名范围(A2:FG2:GH2:H),然后导入它们按这些名称,因此您无需调整使用确切列名称的公式。

关于firebase - 如何在使用 IMPORTRANGE 的 Google 表格中将持续时间转换为秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60866831/

相关文章:

firebase - Google 域 - Firebase 托管的 DNS 配置 - 连接域

android - 使用 Gitlab 从 Firebase (APP Distribution) 下载 Android .apk,以运行 e2e 自动化测试

javascript - 如何动态分组数组文字中的多个制表符范围(通过使用通配符)?

google-apps-script - 如何在 ScriptDB 数据库中查询键 :values within objects nested in array objects Google Apps Script

google-apps-script - 构建 Google App 脚本以将相似的行合并为一行

javascript - Google-apps-script 不会在 onEdit 函数内发送电子邮件

ios - 如何将用户名和电子邮件保存到 firebase

google-apps-script - Google Apps 脚本中的警报对话框

javascript - 运行以在除一张以外的所有工作表上运行

android - Firebase Crashlytics 无法在 Firebase 控制台中报告崩溃