如何将CSV文件中C、H、I列以纯文本格式导入Google Sheet?
问题
我通过以下代码可实现将CSV文件导入Google Sheet,目前希望能将其中C、H、I列的数据以纯文本格式导入,请问该如何操作?
function testf() { var response = UrlFetchApp.fetch("https://xxx.csv"); var ss = SpreadsheetApp.getActiveSpreadsheet(); var dest = ss.getActiveSheet(); SpreadsheetApp.flush(); var sheetId = dest.getSheetId(); var reqs = [ { pasteData: { data: response.getContentText(), delimiter: ",", coordinate: { sheetId } } }, { findReplace: { find: "NULL", replacement: "", sheetId } } ]; Sheets.Spreadsheets.batchUpdate({ requests: reqs }, ss.getId()); }
回答
要让C、H、I列以纯文本格式导入,核心是在粘贴CSV数据后给这几列强制设置纯文本格式——毕竟Google Sheets默认会自动识别数据类型(比如把数字、日期串转成对应格式),我们需要覆盖这个默认行为。
直接在你现有的batchUpdate请求数组里添加格式设置的请求即可,具体修改后的代码如下:
function testf() { var response = UrlFetchApp.fetch("https://xxx.csv"); var ss = SpreadsheetApp.getActiveSpreadsheet(); var dest = ss.getActiveSheet(); SpreadsheetApp.flush(); var sheetId = dest.getSheetId(); var reqs = [ // 1. 粘贴CSV数据 { pasteData: { data: response.getContentText(), delimiter: ",", coordinate: { sheetId } } }, // 2. 替换NULL为空 { findReplace: { find: "NULL", replacement: "", sheetId } }, // 3. 给C列设置纯文本格式(列索引从0开始,C是第2位) { repeatCell: { range: { sheetId: sheetId, startColumnIndex: 2, endColumnIndex: 3 }, cell: { userEnteredFormat: { numberFormat: { type: "TEXT", pattern: "@" } } }, fields: "userEnteredFormat.numberFormat" } }, // 4. 给H列设置纯文本格式(H是第7位索引) { repeatCell: { range: { sheetId: sheetId, startColumnIndex: 7, endColumnIndex: 8 }, cell: { userEnteredFormat: { numberFormat: { type: "TEXT", pattern: "@" } } }, fields: "userEnteredFormat.numberFormat" } }, // 5. 给I列设置纯文本格式(I是第8位索引) { repeatCell: { range: { sheetId: sheetId, startColumnIndex: 8, endColumnIndex: 9 }, cell: { userEnteredFormat: { numberFormat: { type: "TEXT", pattern: "@" } } }, fields: "userEnteredFormat.numberFormat" } } ]; Sheets.Spreadsheets.batchUpdate({ requests: reqs }, ss.getId()); }
关键细节说明:
- 列索引从0开始计数:C列对应索引2,H列是7,I列是8,每个
repeatCell请求只针对单一列(startColumnIndex和endColumnIndex差值为1)。 - 纯文本格式用
numberFormat: { type: "TEXT", pattern: "@" }定义,这是Google Sheets中纯文本的标准格式配置。 fields: "userEnteredFormat.numberFormat"确保我们只修改单元格的数字格式,不会影响其他格式(比如字体、对齐方式)。
另外要确认你已经在脚本编辑器的「资源」→「高级Google服务」里开启了Google Sheets API,否则Sheets.Spreadsheets.batchUpdate会执行报错。
内容的提问来源于stack exchange,提问作者Gavis
相关产品推荐
相关产品推荐

