자습서: Google 스프레드시트를 사용하여 정적 사이트에 양식 추가
16261 단어 gatsbyjavascripttutorialhtml
블로그에 가이드 섹션을 추가하기로 결정했습니다. 계획은 간단합니다. 무언가를 파악하는 데 너무 많은 시간을 할애할 때마다 그에 대한 가이드를 작성하겠습니다.
이 가이드는 Google 시트에 직접 응답을 저장하는 HTML 양식을 만드는 방법에 관한 것입니다. 페이지 하단에 보이는 이메일 가입 양식을 설정하는 방법입니다 👇👇👇
간편하고 추가 서비스가 필요하지 않으며 약 10분이 소요됩니다. 작은 정적 웹사이트에서 이메일을 수집하는 완벽한 솔루션입니다.
1단계: Google 시트 준비
timestamp
및 email
를 헤더로 삽입합니다.Code.gs
에 붙여넣습니다(여기에 있는 코드를 재정의함).var sheetName = 'Sheet1'
var scriptProp = PropertiesService.getScriptProperties()
function initialSetup () {
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 === 'timestamp' ? 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()
}
}
2단계: 프로젝트 설정 및 게시
initialSetup
함수를 선택하고 실행을 클릭합니다.3단계: 웹사이트에 양식 추가
YOUR_WEB_APP_URL
를 웹 앱 URL로 바꿉니다.<form style="text-align:center;" name="submit-to-google-sheet">
<input name="email" type="email" placeholder="Email" required>
<button id="email-submit" type="submit">Send</button>
</form>
<script>
const scriptURL = YOUR_WEB_APP_URL
const form = document.forms['submit-to-google-sheet']
form.addEventListener('submit', e => {
e.preventDefault()
submit_button = document.querySelector("button#email-submit");
submit_button.innerText = "Sending...";
fetch(scriptURL, { method: 'POST', body: new FormData(form)})
.then(function(response){
console.log('Success!', response);
submit_button.innerText = "Done!";
})
.catch(function(error) {
console.error('Error!', error.message);
submit_button.innerText = "Error!";
})
})
</script>
엑스트라
1. 구글폼 폴백 추가
이 방법의 용량이 어느 정도인지 100% 확신할 수 없습니다. 1분 안에 1000개의 양식 제출(I wish 😅)을 처리할 수 있습니까?
그래서 확실히 하기 위해 폴백을 구현했습니다. 실패할 경우 내 웹사이트는 이메일을 제출할 수 있는 Google 양식이 포함된 새 탭을 엽니다.
GOOGLE_FORM_LINK
교체window.open(GOOGLE_FORM_LINK);
<form style="text-align:center;" name="submit-to-google-sheet">
<input name="email" type="email" placeholder="Email" required>
<button id="email-submit" type="submit">Send</button>
</form>
<script>
const scriptURL = YOUR_WEB_APP_URL
const form = document.forms['submit-to-google-sheet']
form.addEventListener('submit', e => {
e.preventDefault()
submit_button = document.querySelector("button#email-submit");
submit_button.innerText = "Sending...";
fetch(scriptURL, { method: 'POST', body: new FormData(form)})
.then(function(response){
console.log('Success!', response);
submit_button.innerText = "Done!";
})
.catch(function(error) {
console.error('Error!', error.message);
submit_button.innerText = "Error!";
window.open(GOOGLE_FORM_LINK);
})
})
</script>
2. 더 많은 필드 수집
정적 사이트 양식에서 더 많은 필드를 캡처하려면 다음을 수행하십시오.
<input>
속성을 사용하여 HTML 양식에 name
를 추가합니다. 예를 들어 이름을 추가해 보겠습니다. 귀하의 Google 시트:
귀하의 HTML 정적 양식:
<form style="text-align:center;" name="submit-to-google-sheet">
<input name="email" type="email" placeholder="Email" required>
<input name="first_name" type="text" placeholder="Your Name" required>
<button id="email-submit" type="submit">Send</button>
</form>
나는 당신이 내 가이드를 즐겼기를 바랍니다! 자세한 내용은 나를 팔로우하거나 my blog을 방문하세요.
jamiewilson에서 수정됨
Reference
이 문제에 관하여(자습서: Google 스프레드시트를 사용하여 정적 사이트에 양식 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bs_tales/tutorial-add-forms-to-static-sites-with-google-sheets-1c3a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)