【问题标题】:How to convert duration to seconds in Google Sheets which uses IMPORTRANGE如何在使用 IMPORTRANGE 的 Google 表格中将持续时间转换为秒
【发布时间】:2020-03-26 12:02:57
【问题描述】:

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

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

将数据从 Googlesheet1 复制到 Googlesheet2。

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

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

有没有办法将给定的持续时间转换为 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 中的 Googlesheet2 ={IMPORTRANGE("url","!A2:G"), ARRAYFORMULA(N(IMPORTRANGE("url","!H2:H")) * 24 * 3600)})(编辑:添加 ARRAYFORMULA
  • 抱歉,将一列误认为另一列。试试这个:={IMPORTRANGE("url","!A2:F"), ARRAYFORMULA(N(IMPORTRANGE("url","!G2:G")) * 24 * 3600), IMPORTRANGE("url","!H2:H")})
  • @kishkin 在 G 列中返回为 0
  • 是的,但是对于空单元格和 0 持续时间(我认为这没问题)。你想要什么空单元格?或者你是否为每个单元格都得到了它,即使是非零值?
  • 您正在导入不同的工作表,不是吗? :) 所以,你应该调整你的列。 ={IMPORTRANGE("url","!A2:D"), ARRAYFORMULA(IF(IMPORTRANGE("url","!E2:E") = "", "", N(IMPORTRANGE("url","!E2:E")) * 24 * 3600)), IMPORTRANGE("url","!F2:F")}

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


【解决方案1】:

这是第二张表的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)使用命名范围,并按这些名称导入它们,这样您就无需调整使用精确列名称的公式。

【讨论】:

    猜你喜欢
    • 2023-01-04
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2013-05-20
    • 2020-05-03
    • 1970-01-01
    相关资源
    最近更新 更多