
本文介绍如何将 JavaScript 对象的键值对自动转换为符合 Google Docs API batchUpdate 要求的动态请求数组,每个键作为 {{key}} 占位符匹配文本,对应值作为替换内容。
本文介绍如何将 javascript 对象的键值对自动转换为符合 google docs api `batchupdate` 要求的动态请求数组,每个键作为 `{{key}}` 占位符匹配文本,对应值作为替换内容。
在使用 Google Docs REST API 的 documents.batchUpdate 方法时,常需批量替换文档中形如 {{name}}、{{city}} 等模板占位符。API 要求请求体包含 requests 数组,其中每个元素是一个 replaceAllText 操作对象,结构如下:
- containsText.text:待匹配的原始文本(需含双大括号,如 "{{name}}")
- replaceText:要插入的实际值(如 "Alexa")
- matchCase:建议设为 "true" 以启用大小写敏感匹配(注意:该字段值为字符串,非布尔值)
下面是一段可直接运行的示例代码,它将 params 对象动态映射为标准请求结构:
const obj = {
"params": {
"name": "Alexa",
"lastName": "Simpson",
"city": "London"
}
};
const batchRequest = {
"requests": Object.entries(obj.params).map(([key, value], index) => ({
"replaceAllText": {
"containsText": {
"text": `{{${key}}}`, // 自动包裹为 {{name}}, {{lastName}} 等
"matchCase": "true"
},
"replaceText": value
}
}))
};
console.log(JSON.stringify(batchRequest, null, 2));输出结果为:
{
"requests": [
{
"replaceAllText": {
"containsText": {
"text": "{{name}}",
"matchCase": "true"
},
"replaceText": "Alexa"
}
},
{
"replaceAllText": {
"containsText": {
"text": "{{lastName}}",
"matchCase": "true"
},
"replaceText": "Simpson"
}
},
{
"replaceAllText": {
"containsText": {
"text": "{{city}}",
"matchCase": "true"
},
"replaceText": "London"
}
}
]
}✅ 关键要点说明:
- 使用 Object.entries() 获取键值对数组,确保遍历顺序与对象定义一致(ES2015+ 规范保证枚举顺序);
- 模板语法 {{${key}}} 是 Google Docs 模板常用约定,务必保留双大括号;
- matchCase: "true" 是字符串类型,不可写作 true(否则 API 将返回 400 错误);
- 若需支持空值或特殊字符(如 &,
- 如需添加序号后缀(如 {{text1}}),可改用 {{text${index + 1}}},但推荐语义化命名(如 {{name}})以提升可维护性。
该方案简洁、可扩展,适用于任意深度为 1 的参数对象,是集成文档自动化工作流的核心工具模式。


















