حفظ بيانات Form في جوجل Sheets

Fireship image

حفظ بيانات form في قاعدة بيانات أحد المشاكل التي قد يواجهها مطوري الـ Front-End في بداية تعلمهم كونها تحتاج الى خبرة جيدة بلغات ومكتبات الـ Back-End.

فيما يلي شرح مبسط لاستخدام Google Sheets كقاعدة بيانات أمنة لحفظ بيانات form.


انشاء Sheet

في البداية قم بالدخول الى Google Sheets وأنشأ ملف جديد.. قم بإعادة تسميته الى form-data على سبيل المثال, ثم أضف عناوين للحقول المطلوبة مع ابقاء العنوان الأول timestamp لاستخدامه لتخزين تاريخ الادخال.


بعد الانتهاء من تسمية الحقول اضغط على Extensions ثم Apps Script ستفتح لك نافذة جديدة قم بإعادة تسميتها الى Submit Form to Google Sheets ثم الصق الكود التالي بعد حذف أي أكواد موجودة مسبقا ثم اضغط على ايقونة Save.


(في حال واجهت مشكلة “Bad Request“ استخدم متصفح Firefox )

var sheetName = 'Sheet1' 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 === '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() } }

الخطوة التالية اضغط على initialSetup ثم Run سيطلب بعض الأذونات قم بالموافقة عليها. 


من القائمة الجانبية اضغط على Triggers (شعار المنبه), ثم Add Trigger ومن ثم قم بالتعديل على الخيارات كما في الصورة ثم اضغط Save, سيطلب بعض الأذونات الاضافية قم بالموافقة عليها. 


الأن اضغط على Deploy ثم New deployment ثم اضغط على الترس في الأعلى واختر Web app ثم قم بالتعديل على خيار Who has access الى Anyone ثم اضغط Deploy


Join