谷歌电子表格脚本:以纯文本形式追加行

5

我正在将一个工作表中的行附加到另一个工作表中,源工作表具有日期格式,例如:Sat, Apr 29, 2017

当追加到目标工作表时,它会更改为4/29/2017格式。 由于我是在追加数据,所以无法在追加前设置单元格格式。

是否有任何方式可以将整个工作表设置为始终使用纯文本?或者通过某种方式强制追加保留源格式而不解释值?

我用于追加的命令是:

targetSheet.appendRow(row);

2
为什么无法设置单元格格式?range.setNumberFormat("@"); 应该将其设置为“纯文本”。 - Tesseract
@SpiderPig 因为要追加的行还不在范围内。 - apadana
你可能需要使用 Range.copyFormatToRange 来从源工作表复制格式。 - Tesseract
4个回答

1
虽然这可能不是一种干净的解决方案,我自己也在寻找这样的解决方案,但这可能是您可以使用的解决方法。
在日期前添加一个撇号或其他不会被视为日期一部分的符号。这将强制电子表格将其解释为文本。

0

数据可以是[[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" }
)

0

一种选择是先添加行,然后清除格式。

function appendInPlainText() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow(["dummy", "data"]);
  sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn()).clearFormat();
  SpreadsheetApp.flush();
}

那只清除文本格式,而不是数字格式。即使它清除了数字格式,也无法恢复原始格式。 - Tharkon

0

似乎没有办法使用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的更多信息:

  1. setNumberFormats(numberFormats)
  2. 关于日期和时间值

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接