为什么 webflow 表单数据未显示在 google 个工作表中?
Why is the webflow form data not showing in google sheets?
我一直在使用这些代码将数据从 webflow 表单解析为 google 工作表,但是这一次,这不起作用而且我找不到原因,因为没有明显的错误。
这是 webflow 站点构建中嵌入的脚本:
<script>
const scriptURL = 'https://script.google.com/macros/s/AKfycbz5X-0FqrOgghfGyvhxbcl9D9CKZU0YWmGjxM6PzuTExBiB-ABoioImHEqx-NrrB73tXA/exec'
const form = document.forms['wf-form-Contato-Form']
form.addEventListener('submit', e => {
e.preventDefault();
fetch(
scriptURL,
{ method: 'POST', body: new FormData(form), mode: 'no-cors'}
)
.then(response => console.log('Success!', response))
.catch(error => console.error('Error!', error.message))
form.reset();
})
</script>
这是 Google Apps 脚本环境中的部分:
var sheetName = 'Leads'
var scriptProp = PropertiesService.getScriptProperties()
function intialSetup() {
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
scriptProp.setProperty('key', activeSpreadsheet.getId())
}
function doPost(e) {
var lock = LockService.getScriptLock()
lock.tryLock(10000)
try {
var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
var sheet = doc.getSheetByName(sheetName)
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
var nextRow = sheet.getLastRow() + 1
var newRow = headers.map(function (header) {
return header === 'Data' ? new Date() : e.parameter[header]
});
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
.setMimeType(ContentService.MimeType.JSON)
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}
}
提交表单时,网络控制台session只显示填写的字段,忽略空字段。不确定上面的headers函数是否要求所有字段都来自表单,以便它们可以映射...
脚本在应用程序脚本末尾执行,没有明显错误,但工作表中没有显示任何内容。
感谢对原因的任何理解。
向您的 Apps 脚本添加一些 console.log
语句以帮助您调试它。
console.log(JSON.stringify(e));
以上语句将记录 web 应用程序事件对象。
console.log(`${sheetName} `${(!sheet ? '' : 'does\'t'} exists`);
以上语句可能有助于确保所需的 sheet 存在。
我一直在使用这些代码将数据从 webflow 表单解析为 google 工作表,但是这一次,这不起作用而且我找不到原因,因为没有明显的错误。
这是 webflow 站点构建中嵌入的脚本:
<script>
const scriptURL = 'https://script.google.com/macros/s/AKfycbz5X-0FqrOgghfGyvhxbcl9D9CKZU0YWmGjxM6PzuTExBiB-ABoioImHEqx-NrrB73tXA/exec'
const form = document.forms['wf-form-Contato-Form']
form.addEventListener('submit', e => {
e.preventDefault();
fetch(
scriptURL,
{ method: 'POST', body: new FormData(form), mode: 'no-cors'}
)
.then(response => console.log('Success!', response))
.catch(error => console.error('Error!', error.message))
form.reset();
})
</script>
这是 Google Apps 脚本环境中的部分:
var sheetName = 'Leads'
var scriptProp = PropertiesService.getScriptProperties()
function intialSetup() {
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
scriptProp.setProperty('key', activeSpreadsheet.getId())
}
function doPost(e) {
var lock = LockService.getScriptLock()
lock.tryLock(10000)
try {
var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
var sheet = doc.getSheetByName(sheetName)
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
var nextRow = sheet.getLastRow() + 1
var newRow = headers.map(function (header) {
return header === 'Data' ? new Date() : e.parameter[header]
});
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
.setMimeType(ContentService.MimeType.JSON)
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}
}
提交表单时,网络控制台session只显示填写的字段,忽略空字段。不确定上面的headers函数是否要求所有字段都来自表单,以便它们可以映射...
脚本在应用程序脚本末尾执行,没有明显错误,但工作表中没有显示任何内容。
感谢对原因的任何理解。
向您的 Apps 脚本添加一些 console.log
语句以帮助您调试它。
console.log(JSON.stringify(e));
以上语句将记录 web 应用程序事件对象。
console.log(`${sheetName} `${(!sheet ? '' : 'does\'t'} exists`);
以上语句可能有助于确保所需的 sheet 存在。