Google电子表格脚本:以纯文本

时间:2017-04-22 23:10:31

标签: google-apps-script google-sheets

我将一张表格中的行附加到另一张表格,而源表格的日期格式如下:Sat, Apr 29, 2017

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

无论如何我可以将整张纸设置为纯文本吗?或以某种方式强制附加保持格式像源,而不是解释值?

我用来追加的命令是:

targetSheet.appendRow(row);

3 个答案:

答案 0 :(得分:1)

虽然它可能不是一个干净的解决方案,我自己也在寻找一些解决方案,但这可能是您可以使用的解决方法。

添加撇号或其他不会被识别为日期一部分的符号。这将强制电子表格将其解释为文本。

答案 1 :(得分:0)

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

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

答案 2 :(得分: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. About date and time values