Google Sheet导入CSV脚本出现陌生符号�的解决方法求助
解决CSV导入Google Sheet出现乱码�的问题
问题根源
�符号是编码不匹配导致的乱码:你的CSV文件大概率使用了非UTF-8编码(比如ISO-8859-1、GBK等),而UrlFetchApp.fetch()默认以UTF-8解析内容,无法识别的字符就会被替换成�。
解决方案
方案1:指定正确的CSV编码解析内容
修改response.getContentText(),传入CSV实际使用的编码参数。比如如果CSV是ISO-8859-1编码:
function testf() { var response = UrlFetchApp.fetch("http://caricamento/user.csv"); // 替换为CSV实际的编码,比如ISO-8859-1、GBK等 var csvContent = response.getContentText("ISO-8859-1"); var ss = SpreadsheetApp.getActiveSpreadsheet(); var cell = ss.getRange("DB DEFINITVO!K1:L"); cell.setNumberFormat('@STRING@'); var cell2 = ss.getRange("DB DEFINITVO!C1:C"); cell2.setNumberFormat('@STRING@'); var dest = ss.getSheetByName("DB DEFINITVO"); var sheetId = dest.getSheetId(); var reqs = [ { pasteData: { data: csvContent, delimiter: ",", coordinate: { sheetId } } }, { findReplace: { find: "NULL", replacement: "", sheetId } } ]; Sheets.Spreadsheets.batchUpdate({ requests: reqs }, ss.getId()); }
如果不确定编码,可以尝试常见的ISO-8859-1或GBK,或者先下载CSV文件,用文本编辑器(比如Notepad++)查看编码信息。
方案2:批量替换已导入的�符号
如果已经导入数据,或者无法确定编码,可以在批量请求中添加替换规则,直接移除�(对应Unicode字符U+FFFD):
function testf() { var response = UrlFetchApp.fetch("http://caricamento/user.csv"); var ss = SpreadsheetApp.getActiveSpreadsheet(); var cell = ss.getRange("DB DEFINITVO!K1:L"); cell.setNumberFormat('@STRING@'); var cell2 = ss.getRange("DB DEFINITVO!C1:C"); cell2.setNumberFormat('@STRING@'); var dest = ss.getSheetByName("DB DEFINITVO"); var sheetId = dest.getSheetId(); var reqs = [ { pasteData: { data: response.getContentText(), delimiter: ",", coordinate: { sheetId } } }, { findReplace: { find: "NULL", replacement: "", sheetId } }, // 添加替换�的规则 { findReplace: { find: "\ufffd", replacement: "", sheetId } } ]; Sheets.Spreadsheets.batchUpdate({ requests: reqs }, ss.getId()); }
注意事项
- 优先使用方案1,因为直接解析正确编码能保留原始字符,方案2只是移除乱码符号,可能丢失原数据信息。
- 如果CSV编码是UTF-8但仍出现乱码,可能是文件本身有损坏,建议重新生成CSV文件。
内容的提问来源于stack exchange,提问作者Franco DF
相关产品推荐
相关产品推荐

