You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 17:12:31