我正在将一个工作表中的行附加到另一个工作表中,源工作表具有日期格式,例如:Sat, Apr 29, 2017
当追加到目标工作表时,它会更改为4/29/2017
格式。
由于我是在追加数据,所以无法在追加前设置单元格格式。
是否有任何方式可以将整个工作表设置为始终使用纯文本?或者通过某种方式强制追加保留源格式而不解释值?
我用于追加的命令是:
targetSheet.appendRow(row);
我正在将一个工作表中的行附加到另一个工作表中,源工作表具有日期格式,例如:Sat, Apr 29, 2017
当追加到目标工作表时,它会更改为4/29/2017
格式。
由于我是在追加数据,所以无法在追加前设置单元格格式。
是否有任何方式可以将整个工作表设置为始终使用纯文本?或者通过某种方式强制追加保留源格式而不解释值?
我用于追加的命令是:
targetSheet.appendRow(row);
数据可以是[[1,2,3],[4,5,6]]的形式。 这样,您就可以将新数据附加到工作表中,而不必获取最后一行。
valueInputOption: "RAW"将不会解析数据格式。USER_ENTERED将解析数据格式。
Sheets.Spreadsheets.Values.append({
majorDimension: "ROWS",
values: data,
},
SheetID,
SheetName,
//valueInputOption: "RAW" OR "USER_ENTERED"
//Reference here:https://developers.google.com/sheets/api/reference/rest/v4/ValueInputOption
{ valueInputOption: "RAW" }
)
一种选择是先添加行,然后清除格式。
function appendInPlainText() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(["dummy", "data"]);
sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn()).clearFormat();
SpreadsheetApp.flush();
}
似乎没有办法使用sheet.appendRow(data).set来附加一行并使用.setNumberFormat。无论我如何尝试,.setNumberFormat都不是弹出的选项。
以下是适用于我的情况的解决方案,可能对其他人有帮助:我正在尝试附加一行,其中一个单元格具有以“000”开头的序列号。如果我不在其余单元格中放置一些文本,那么零将自动删除,不幸的是。添加文本后面会更麻烦。以下是对我有效的解决方案:
while (files.hasNext()) {
var file = files.next();
var name = file.getName(); // The name of the file is a serial number that starts with "000"
var url = file.getUrl();
var lastUpdate = file.getLastUpdated();
var description = file.getDescription();
var lastRow = sheet.getLastRow();
sheet.getRange(lastRow + 1, 1).setValue(name).setNumberFormat("@");
sheet.getRange(lastRow + 1, 2).setValue(url);
sheet.getRange(lastRow + 1, 3).setValue(lastUpdate);
sheet.getRange(lastRow + 1, 4).setValue(description);
}
这并不像使用sheet.appendRow(data).set那么简单,但它确实可以添加一行并将格式设置为纯文本。希望有人知道更简单的方法。
以下是来自Google的更多信息:
range.setNumberFormat("@");
应该将其设置为“纯文本”。 - TesseractRange.copyFormatToRange
来从源工作表复制格式。 - Tesseract