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

如何移除JSON字符串中的括号、引号、逗号 处理谷歌Places API营业时间

问题描述
  • 基于Google App Script开发Google Sheets工具,可接收用户输入的Google Maps商户名称,调用Places API拉取商户的名称、地址、联系电话、官网、营业时间等信息
  • 拉取到的营业时间对应字段为place.opening_hours.weekday_text,本身是字符串数组,直接使用JSON.stringify加单次replace处理无法清除所有多余的括号、引号、逗号,最多只能展示周一的营业时间
  • 需求是将营业时间按行整齐展示在单个单元格内,无多余符号
错误实现思路

直接对数组执行JSON序列化后替换符号,由于JS的非全局replace只会匹配第一个符合规则的字符,无法处理数组内所有冗余符号,代码示例:

JSON.stringify(place.opening_hours.weekday_text, "", 1).replace("[", "").replace("\"", "").replace("\",", "").replace("]", "")
正确解决方法

不需要对数组做序列化处理,weekday_text本身的每一项已经是格式化完成的营业时间字符串,直接遍历数组拼接内容、添加换行符即可:

function writeToSpreadsheet() {
  var results = COMBINED2('');
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1, 1, 1, 6).setValues(results);
}

function COMBINED2(text) {
  var API_KEY = '替换为你自己的Places API密钥';
  // 替换为你自己的定位坐标参数
  var LOC_BASIS_LAT_LON = '40.754734421655655, -73.98840133506883';
  var baseUrl = 'https://maps.googleapis.com/maps/api/place/findplacefromtext/json';
  var queryUrl = baseUrl + '?input=' + text + '&inputtype=textquery&key=' + API_KEY + "&locationbias=point:" + LOC_BASIS_LAT_LON;
  var response = UrlFetchApp.fetch(queryUrl);
  var json = response.getContentText();
  var placeId = JSON.parse(json);
  var ID = placeId.candidates[0].place_id;

  var fields = 'name,formatted_address,formatted_phone_number,website,url,types,opening_hours';
  var baseUrl2 = 'https://maps.googleapis.com/maps/api/place/details/json?placeid=';
  var queryUrl2 = baseUrl2 + ID + '&fields=' + fields + '&key='+ API_KEY + "&locationbias=point:" + LOC_BASIS_LAT_LON;

  if (ID == '') {
    return '请输入正确的商户名称';
  }

  var response2 = UrlFetchApp.fetch(queryUrl2);
  var json2 = response2.getContentText();
  var place = JSON.parse(json2).result;

  // 拼接营业时间
  var weekdays = '';
  place.opening_hours.weekday_text.forEach((weekdayText) => {
    weekdays += ( weekdayText + '\r\n' );
  } );

  var data = [ [
    place.name,
    place.formatted_address,
    place.formatted_phone_number,
    place.website,
    place.url,
    weekdays.trim()
  ] ];

  return data;
}
实现效果

营业时间会按天换行展示在对应单元格内,格式如下:

Monday: 4:00 – 9:00 PM
Tuesday: 4:00 – 9:00 PM
Wednesday: 4:00 – 9:00 PM
Thursday: 4:00 – 9:00 PM
Friday: 12:00 – 10:00 PM
Saturday: 12:00 – 10:00 PM
Sunday: 12:00 – 8:00 PM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 04:57:03