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 值作为字符串。
在 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 值作为字符串。