如何用Google Sheets公式判断Google表单是否接受响应?
直接通过Google Apps Script获取Google表单状态(无需解析HTML)
你之前用IMPORTXML的方法不可靠——Google表单的HTML结构属于内部实现,随时可能修改类名或布局,导致XPath路径失效出现解析错误。直接用Google Apps Script的FormApp服务就能精准获取表单状态,步骤如下:
1. 编写状态更新脚本
打开你的Google表格,点击「扩展程序」>「Apps脚本」,替换默认代码为以下内容:
function updateFormStatus() { // 替换成你的Google表单URL const formUrl = "你的Google表单完整URL"; const form = FormApp.openByUrl(formUrl); // 获取并转换状态文本 const isAccepting = form.isAcceptingResponses(); const statusText = isAccepting ? "Open" : "Closed"; // 将状态写入Toggle按钮下方的单元格,这里假设是A4,可根据你的表格调整 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.getRange("A4").setValue(statusText); } // 可选:和你的开关表单脚本绑定,实现开关后自动同步状态 function toggleFormStatus() { const formUrl = "你的Google表单完整URL"; const form = FormApp.openByUrl(formUrl); // 切换表单接受响应状态 form.setAcceptingResponses(!form.isAcceptingResponses()); // 切换后立即更新表格内的状态显示 updateFormStatus(); }
2. 绑定脚本到按钮
- 如果你想手动触发状态更新:插入一个绘图按钮(「插入」>「绘图」),绘制完成后右键点击按钮,选择「指定脚本」,输入
updateFormStatus。 - 如果你已有Toggle开关按钮:直接把原开关脚本替换成上面的
toggleFormStatus,这样每次点击开关都会自动同步状态到目标单元格。
3. 可选:设置自动加载状态
如果希望打开表格时自动加载最新状态:
- 在Apps脚本编辑器左侧点击「触发器」图标,添加新触发器。
- 选择
updateFormStatus函数,事件类型选「从电子表格」>「打开」,保存并完成授权即可。
内容的提问来源于stack exchange,提问作者SadBrontosaurus
相关产品推荐
相关产品推荐

