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

使用Google Apps Script PropertiesService遇对象字面量意外令牌语法错误

解决Google Apps PropertyService存储对象后解析的SyntaxError问题

我之前也踩过这个一模一样的坑!其实问题出在你对setProperties()的理解上——它不会自动帮你序列化对象。

当你直接把一个对象传给setProperties()的时候,PropertyService会把对象里的非基本类型值(比如嵌套对象)强制转换成字符串,但它不是转成标准JSON,而是转成[object Object]这种毫无意义的字符串。等你之后尝试用JSON.parse()去解析这个字符串时,自然会抛出SyntaxError: Unexpected Token in Object Literal,因为这根本不是合法的JSON格式。

正确的处理步骤:

  • 存储对象前先序列化:用JSON.stringify()把对象转换成标准的JSON字符串再存

    // 示例:存储单个设置对象
    const appSettings = {
      theme: 'light',
      autoSync: true,
      maxItems: 50
    };
    // 存单个属性(推荐存对象用这个方式,逻辑更清晰)
    PropertiesService.getUserProperties().setProperty('appSettings', JSON.stringify(appSettings));
    
    // 如果要批量设置多个属性,确保对象类型的属性都转成JSON字符串
    const multiProps = {
      userName: 'Chris',
      userPrefs: JSON.stringify({ emailAlerts: false })
    };
    PropertiesService.getUserProperties().setProperties(multiProps);
    
  • 获取后再解析:拿到存储的字符串后,用JSON.parse()转回对象

    // 获取并解析设置
    const storedSettingsStr = PropertiesService.getUserProperties().getProperty('appSettings');
    const appSettings = JSON.parse(storedSettingsStr);
    
    // 现在就能正常访问对象属性了
    console.log(appSettings.theme); // 输出 'light'
    

额外注意事项:

  1. 清空PropertiesService后,建议用getProperties()检查当前存储的所有属性,确保没有残留的旧格式数据,避免干扰测试。
  2. 如果你的对象里包含不能被JSON序列化的值(比如函数、Symbol),要先处理掉这些值,否则JSON.stringify()会忽略它们或者直接报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:14:05