【发布时间】: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