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

向Google表格Web应用脚本提交数据时挪威字符丢失问题

我完全懂这个痛点!Google Apps Script的Web App在处理带特殊字符(比如挪威语的å、æ、ø)的POST请求时,e.parameters确实会出现字符丢失或乱码的问题,但e.postData.contents里的原始数据是完好的——这是因为Google在自动解析参数时用的编码方式没处理好非ASCII字符。下面是我亲测有效的解决办法:

解决步骤

1. 绕过e.parameters,直接解析原始POST内容

别再依赖e.parameters提取数据了,直接读取e.postData.contents并手动解析,这样能保留所有特殊字符。根据你发送的POST数据格式,分两种情况处理:

情况1:表单格式(application/x-www-form-urlencoded)

如果你的请求是普通表单编码格式,用decodeURIComponent()解码原始内容,再拆分键值对:

function doPost(e) {
  // 解码原始POST内容,还原特殊字符
  const rawDecodedData = decodeURIComponent(e.postData.contents);
  
  // 将解码后的字符串拆分成键值对对象
  const parsedParams = rawDecodedData.split('&').reduce((result, pair) => {
    const [key, value] = pair.split('=');
    result[key] = value;
    return result;
  }, {});
  
  // 现在parsedParams里的挪威字符完全正常了!
  Logger.log(parsedParams.yourFieldName); // 比如输出包含å/æ/ø的内容
  
  // 示例:写入Google表格
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.appendRow([parsedParams.name, parsedParams.message]);
  
  // 返回成功响应
  return ContentService.createTextOutput(JSON.stringify({
    status: 'success',
    data: parsedParams
  })).setMimeType(ContentService.MimeType.JSON);
}

情况2:JSON格式(application/json)

如果发送的是JSON数据,直接解析原始内容即可,因为JSON本身支持UTF-8编码:

function doPost(e) {
  // 直接解析原始JSON内容,特殊字符完好保留
  const jsonData = JSON.parse(e.postData.contents);
  
  Logger.log(jsonData.note); // 正常显示å/æ/ø
  
  // 后续处理逻辑...
  return ContentService.createTextOutput(JSON.stringify({status: 'success'}))
    .setMimeType(ContentService.MimeType.JSON);
}

2. 确保前端请求的编码正确

不管用哪种格式发送请求,都要保证前端对特殊字符做了正确编码:

  • 如果是手动拼接表单数据,用encodeURIComponent()对每个参数值编码:
    const formData = {
      name: 'Erlend',
      message: 'Jeg elsker åæø!'
    };
    const encodedBody = Object.keys(formData)
      .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(formData[key])}`)
      .join('&');
    
  • 更简单的方式是用FormData对象,它会自动处理编码:
    const form = new FormData();
    form.append('name', 'Erlend');
    form.append('message', 'Jeg elsker åæø!');
    

3. 验证效果

部署Web App后,发送测试请求,然后:

  • 查看脚本编辑器的「日志」(顶部菜单「查看」→「日志」),确认特殊字符正常显示
  • 检查Google表格中写入的内容,确保å/æ/ø没有被剥离

内容的提问来源于stack exchange,提问作者Erlend

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:05:35