Зберігання данних з форм на сайті в Google Таблиці
apps script
7 квіт. 2022 р.
Google sheets дуже зручні у використанні та доступні з будь-якого пристрою. В Google є дуже потужний інструмент Apps Script, що дає змогу інтегруватись майже з усіма продуктами google, ми це використаємо для того, щоб данні з форми на сайті зберігались зразу в таблицю.
Спершу, що потрібно зробити створити саму таблицю.
Далі переходимо в Розширення -> App Script
Вставляємо код
function doGet(e){
console.info(e)
setData(e)
}
function doPost(e){
if(e.postData.contents)
e.parameter = JSON.parse(e.postData.contents)
setData(e)
}
/**
* set data request
*/
function setData(e) {
try {
var ss = SpreadsheetApp.openById("1Y3PххххххххххVM7h9WCekM8"); // Змінюємо на свій ID таблиці
// тут ставимо співвідношення Назвпи параметру до колонки в таблиці
var column = {
'name':'B',
'text':'C'
}
var last = ss.getLastRow() + 1;
for (var param in column){
if (e.parameter[param]) ss.getRange(column[param] + last).setValue(e.parameter[param]);
}
// Встановлення поточної дати
ss.getRange('A' + last).setValue(new Date());
// ss.getRange(last + ':' + last).setBackground('yellow');// Желтый фон строки
} catch (e) {
console.log(e.message)
}
}
Перше що треба зробити
- Змінити id на id вашої таблиці
- Налаштувати колонки відповідно до ваших параметрів запиту (На прикладі запиту далі буде ясно)
- Вводимо в дію наш скрипт та копіюємо Ідентифікатор введення в дію
Приклад запитів
JS
let data = {
name : 'Mark',
text : 'Text message'
}
fetch('https://script.google.com/macros/s/{Ідентифікатор введення в дію}/dev',{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify()
}).then( res=>{
res.json().then(r=>{
console.log(r)
})
} )
PHP
$array = array(
'name' => 'admin',
'text' => '1234'
);
$id = '{Ідентифікатор введення в дію}';
$url = sprintf('https://script.google.com/macros/s/%s/exec',$id);
$ch = curl_init($url);
$payload = json_encode($array);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
echo $html;