ملخص طلبات اليوم على تيليجرام
كل ليلة، تصلك طلبات اليوم والإيرادات ونسبة الدفع عند الاستلام وأكثر المنتجات مبيعًا من جدول الطلبات.
كيف تعمل
المشغّل: جدول زمني — كل يوم الساعة 23:00
- اقرأ جدول الطلبات.
- احتفظ بطلبات اليوم واحسب عددها والإيرادات.
- احسب عدد طلبات الدفع عند الاستلام وأكثر 3 منتجات مبيعًا.
- أرسل الملخص على تيليجرام.
المخطط
مشغّل تطبيق كود
الكود
كود JavaScript المستخدم في خطوات Code، وهو مضمَّن بالفعل في القالب بالأسفل.
// Orders sheet columns: date | order_id | customer | phone | city | items | total | payment
// Adds up today's orders and builds a short Telegram message.
const today = new Date().toISOString().slice(0, 10);
const orders = $input.all()
.map((item) => item.json)
.filter((o) => String(o.date).slice(0, 10) === today);
const revenue = orders.reduce((sum, o) => sum + (Number(o.total) || 0), 0);
const cod = orders.filter((o) => /cod|cash/i.test(String(o.payment))).length;
// items look like "2× Black abaya، 1× Scarf"
const counts = {};
for (const o of orders) {
for (const part of String(o.items || "").split(/[,،]/)) {
const m = part.trim().match(/^(\d+)\s*[×x]\s*(.+)$/);
if (m) counts[m[2]] = (counts[m[2]] || 0) + Number(m[1]);
}
}
const top = Object.entries(counts)
.sort((a, b) => b[1] - a[1])
.slice(0, 3)
.map(([name, qty]) => `- ${name}: ${qty}`)
.join("\n");
return [{
json: {
message:
`Orders today (${today}): ${orders.length}\n` +
`Revenue: ${revenue.toLocaleString("en-US")}\n` +
`Cash on delivery: ${cod} of ${orders.length}` +
(top ? `\n\nTop products:\n${top}` : ""),
},
}];ابنِها بأداتك
اختر أداتك — نفس الأتمتة، خطوة بخطوة.
انسخه والصقه مباشرة في مساحة عمل n8n (Ctrl+V)، أو حمّله واستخدم Import from File. بعد ذلك اربط حساباتك واستبدل كل قيمة تبدأ بـ YOUR_.
عرض الكود (136 سطر)
{
"name": "ملخص طلبات اليوم على تيليجرام (Flowngn)",
"nodes": [
{
"parameters": {
"content": "## ملخص طلبات اليوم على تيليجرام\nكل ليلة، تصلك طلبات اليوم والإيرادات ونسبة الدفع عند الاستلام وأكثر المنتجات مبيعًا من جدول الطلبات.\n\n**Setup**\n1. Open each node and connect your own credentials.\n2. Replace every YOUR_… placeholder.\n3. Test once, then activate.\n\nFree template from Flowngn",
"height": 260,
"width": 340
},
"id": "2473c6c3-ba78-4235-a758-cbde9e312b58",
"name": "Setup notes",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-420,
-60
]
},
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 23
}
]
}
},
"id": "2473c6c3-ba78-4235-a758-cbde9e312b58",
"name": "Every day 23:00",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
]
},
{
"parameters": {
"operation": "read",
"documentId": {
"__rl": true,
"value": "YOUR_SPREADSHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Orders",
"mode": "name"
},
"options": {}
},
"id": "2473c6c3-ba78-4235-a758-cbde9e312b58",
"name": "Read orders",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
300,
0
]
},
{
"parameters": {
"jsCode": "// Orders sheet columns: date | order_id | customer | phone | city | items | total | payment\n// Adds up today's orders and builds a short Telegram message.\nconst today = new Date().toISOString().slice(0, 10);\nconst orders = $input.all()\n .map((item) => item.json)\n .filter((o) => String(o.date).slice(0, 10) === today);\n\nconst revenue = orders.reduce((sum, o) => sum + (Number(o.total) || 0), 0);\nconst cod = orders.filter((o) => /cod|cash/i.test(String(o.payment))).length;\n\n// items look like \"2× Black abaya، 1× Scarf\"\nconst counts = {};\nfor (const o of orders) {\n for (const part of String(o.items || \"\").split(/[,،]/)) {\n const m = part.trim().match(/^(\\d+)\\s*[×x]\\s*(.+)$/);\n if (m) counts[m[2]] = (counts[m[2]] || 0) + Number(m[1]);\n }\n}\nconst top = Object.entries(counts)\n .sort((a, b) => b[1] - a[1])\n .slice(0, 3)\n .map(([name, qty]) => `- ${name}: ${qty}`)\n .join(\"\\n\");\n\nreturn [{\n json: {\n message:\n `Orders today (${today}): ${orders.length}\\n` +\n `Revenue: ${revenue.toLocaleString(\"en-US\")}\\n` +\n `Cash on delivery: ${cod} of ${orders.length}` +\n (top ? `\\n\\nTop products:\\n${top}` : \"\"),\n },\n}];"
},
"id": "2473c6c3-ba78-4235-a758-cbde9e312b58",
"name": "Summarize today",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
600,
0
]
},
{
"parameters": {
"chatId": "YOUR_CHAT_ID",
"text": "={{ $json.message }}",
"additionalFields": {
"appendAttribution": false
}
},
"id": "2473c6c3-ba78-4235-a758-cbde9e312b58",
"name": "Send to Telegram",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
900,
0
]
}
],
"connections": {
"Every day 23:00": {
"main": [
[
{
"node": "Read orders",
"type": "main",
"index": 0
}
]
]
},
"Read orders": {
"main": [
[
{
"node": "Summarize today",
"type": "main",
"index": 0
}
]
]
},
"Summarize today": {
"main": [
[
{
"node": "Send to Telegram",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": false
},
"tags": []
}في Make، أنشئ سيناريو جديدًا وأضف هذه الوحدات بالترتيب:
- Schedule the scenario: Every day 23:00
- Google Sheets › Search Rows
- Tools › Set variable / Iterator + Array aggregator (same logic as the Code step)
- Telegram Bot › Send a Text Message or a Reply
- كل تشغيل لوحدة يستهلك عمليات (operations) في Make — والباقة المجانية تتضمن حصة شهرية.
- دوال Make المدمجة (map و sum و formatDate…) تغني عن معظم خطوات Code؛ وللمنطق المعقد استخدم وحدة كود.
- قد تختلف أسماء الوحدات والخطوات قليلًا مع تحديث Make و Zapier لتطبيقاتهما.
في Zapier، أنشئ Zap جديدًا وأضف هذه الخطوات بالترتيب:
- Schedule by Zapier — Every day 23:00
- Google Sheets — Lookup Spreadsheet Rows (or Code by Zapier)
- Code by Zapier — Run JavaScript (paste the code from the Code section)
- Telegram — Send Message
- الـ Zaps التي فيها أكثر من خطوتين تحتاج باقة Zapier مدفوعة.
- الـ Webhooks والفلاتر/المسارات و Code by Zapier ميزات مدفوعة في بعض باقات Zapier.
- Code by Zapier يشغّل JavaScript: أعد استخدام الكود بالأعلى، مع قراءة المدخلات من inputData بدلًا من $json.
- قد تختلف أسماء الوحدات والخطوات قليلًا مع تحديث Make و Zapier لتطبيقاتهما.
نصائح
- استخدمه مع أتمتات "الطلبات إلى Google Sheets" لسلة أو زد أو WooCommerce، فهي تستخدم نفس الأعمدة.
أتمتات مشابهة
التجارة الإلكترونيةسهل
سجّل كل طلب جديد في Google Sheets
كل طلب جديد في Shopify يصبح صفًا في جدول يمكنك تصفيته ومشاركته.
Shopify → Google Sheets4 س/شهر
التجارة الإلكترونيةسهل
تنبيهات الطلبات الجديدة على تيليجرام
إشعار تيليجرام بالمنتجات والإجمالي لكل طلب جديد.
Shopify → Telegram2 س/شهر
التجارة الإلكترونيةسهل
طلبات WooCommerce الجديدة على تيليجرام
رسالة تيليجرام بالمنتجات والإجمالي والمدينة لكل طلب في WooCommerce.
WooCommerce → Telegram2 س/شهر