GAS:如何始终将单元格数据读取为电子表格中的文本?

GAS: how to always read a cell data as a text in spreadsheet?

在 ma Google 应用程序脚本项目中,我需要确保始终将单元格数据读取为文本。为了确保它像那样发生,我在每个 .appendRow() 之后添加了 .setNumberFormat('@STRING@')。为了 100% 确定我什至在更新单元格后更改了格式。

但碰巧在电子表格的中间有一行格式不是文本但是......我猜它没有格式。

因此在读取和处理此类数据时会产生错误Thu Mar 11 2021 00:00:00 GMT+0100 (Central European Standard Time) Error TypeError: data[row][1].split is not a function at getTabulatorData(web functions:445:34)

因为 split() 函数不适用于日期对象。

单元格中保存的数据为3/11/2021

目前获取数据的代码是

var range = sheetData.getRange(firstRow, 1, lastRow, columns)
var data  = range.getValues()

如果我使用

var dataTMP = Sheets.Spreadsheets.Values.get(spreadsheetId, sheetName+"!"+range.getA1Notation(),
                                                         {valueRenderOption:"FORMATTED_VALUE"})

然后我得到正确的文本值,即使我将单元格格式化为日期。

这是将数据作为文本读取的正确方法吗?在Google中写着documentation

// This code uses the Sheets Advanced Service, but for most use cases
// the built-in method SpreadsheetApp.getActiveSpreadsheet()
//     .getRange(range).getValues(values) is more appropriate.
var result = Sheets.Spreadsheets.Values.get(spreadsheetId, range);
var numRows = result.values ? result.values.length : 0;

问题 1:Sheets.Spreadsheets.Values.get(spreadsheetId,sheetName+"!"+range.getA1Notation(),{valueRenderOption:"FORMATTED_VALUE"}) 是否总是让我将数据保存为原始文本?

问题2:有没有办法.getRange().getValues()读取、解释存档数据?

尝试使用 .getDisplayValues() 而不是 .getValues()。第一个将 return 值作为字符串。