يوجد العديد من الاستخدامات لـJSON API، وأبسط الطرق وأكثرهم استخدامًأ هي الربط بـGoogle Sheets.
يمكنك استخدام هذه الطريقة لـ:
-
تحفظ متغيرات
-
تحفظ حجوزات
-
نتحفظ طلبات
-
تستخدم جدول البيانات كنظام إدارة علاقات العملاء
كيفية ربط البوت بـJSON API و Google Sheets
حضّر جدول البيانات
-
انشئ جدول بيانات جديد أو افتح جدول موجود مسبقًا
-
جهّز الجدول ليستقبل البيانات كما هو موضح
-
قم بتسمية العواميد بدقة
-
ضف عمود Timestamp ليسجل لك موعد كل اضافة جديدة
حضّر الـAppScript
function doGet(e){
return handleResponse(e);
}
// Enter sheet name where data is to be written below
var SHEET_NAME = "Sheet1";
var SCRIPT_PROP = PropertiesService.getScriptProperties(); // new property service
function handleResponse(e) {
// shortly after my original solution Google announced the LockService[1]
// this prevents concurrent access overwritting data
// [1] http://googleappsdeveloper.blogspot.co.uk/2011/10/concurrency-and-google-apps-script.html
// we want a public lock, one that locks for all invocations
var lock = LockService.getPublicLock();
lock.waitLock(30000); // wait 30 seconds before conceding defeat.
try {
// next set where we write the data - you could write to multiple/alternate destinations
var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
//var doc = SpreadsheetApp.openById("1BzKVTSZrhh6t9cuATPFNqENlJW5DAiBLbMlo8y3zrWY");
var sheet = doc.getSheetByName(SHEET_NAME);
// we'll assume header is in row 1 but you can override with header_row in GET/POST data
var headRow = e.parameter.header_row || 1;
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow()+1; // get next row
var row = [];
// loop through the header columns
for (i in headers){
if (headers[i] == "Timestamp"){ // special case if you include a 'Timestamp' column
row.push(new Date());
} else { // else use header name to get data
row.push(e.parameter[headers[i]]);
}
}
// more efficient to set values as [][] array than individually
sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
// return json success results
return ContentService
.createTextOutput(JSON.stringify({"result":"success", "row": nextRow}))
.setMimeType(ContentService.MimeType.JSON);
} catch(e){
// if error return this
return ContentService
.createTextOutput(JSON.stringify({"result":"error", "error": e}))
.setMimeType(ContentService.MimeType.JSON);
} finally { //release lock
lock.releaseLock();
}
}
function setup() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
SCRIPT_PROP.setProperty("key", doc.getId());
}
- في أعلى جدول البيانات، انقر Extensions ثم Apps Script.
- انسخ الكود الموجود بالأعلى وانقله هناك.
- في أعلى جدول البيانات، انقر Save.
- انقر فوق "doGet" ثم اختر 'Setup" ثم انقر "Run".
- أنشر الـscript عن طريق النقر على "Deploy" ثم اختر "New Deployment".
- انقر فوق “Deploy as a Web App”. عن طريق النقر فوق "Select type"
- انسخ الرابط المنشور.
عند التنفيذ والنشر تأكد أن:
-
"Execute the app as" هو أنت
-
“Who Has Access To The App” يتيح لأي أحد أن يفتحه
حضر مجموعات الرسائل
-
ضف "واجهة برمجة التطبيقات" في مجموعة الرسائل التي تود دمج جدول البيانات معها
-
أختر "الحصول على"
-
انقل الرابط الذي نسخته من Google AppScript ثم ضف علامة "؟"
-
عدل الأسامي بالرابط لتطابق أسامي العواميد بالجدول
-
ضف متغيرات لتحديد الوسيط
-
جرب الدمج!