Google Sheets脚本报错:将行转为制表符分隔文本失败
问题分析与解决
错误原因
你代码里的报错TypeError: a.join is not a function是因为对非数组类型调用了数组方法:
values[5]是表格中的一行数据,对应一个一维数组,数组内的每个元素a是单个单元格的值(比如数字、字符串、日期对象),并非数组。join()是数组专属方法,单个值无法调用该方法,因此触发错误。
修正代码
你不需要用map遍历行内元素,直接对整行数组调用join('\t')即可生成制表符分隔的文本:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName( spreadsheetname ); var rows = sheet.getDataRange(); var values = rows.getValues(); testrow = values[5]; Logger.log ( 'OUTPUT: testrow '); Logger.log ( testrow ); // 修正后的代码:直接对一维数组调用join var textprint = testrow.join('\t'); Logger.log ( 'OUTPUT: textprint '); Logger.log ( textprint );
补充说明
如果后续需要处理多行数据生成制表符分隔文本,才需要结合map和join:
// 多行转制表符分隔文本,每行占一行 var multiRowText = values.map(row => row.join('\t')).join('\n');
内容的提问来源于stack exchange,提问作者Casey Harrils
相关产品推荐
相关产品推荐

