گوگل شیٹس میں دو قدمی منظوری کے ای میل نوٹیفکیشن سسٹم کو نافذ کرنا

گوگل شیٹس میں دو قدمی منظوری کے ای میل نوٹیفکیشن سسٹم کو نافذ کرنا
Google Sheets

اسپریڈشیٹ ورک فلوز میں منظوری کی اطلاعات کو خودکار بنانا

آج کے تیز رفتار کاروباری ماحول میں، منظوری کے عمل کی کارکردگی آپریشنل ورک فلو کو نمایاں طور پر متاثر کر سکتی ہے۔ بہت سی تنظیمیں اس کی لچک اور رسائی کی وجہ سے منظوری کی درخواستوں جیسے کاموں کا انتظام کرنے کے لیے Google Sheets پر انحصار کرتی ہیں۔ ان عملوں کے لیے خودکار نظام کو لاگو کرتے وقت ایک مشترکہ چیلنج پیدا ہوتا ہے، خاص طور پر جب اس میں دو قدمی منظوری کا طریقہ کار شامل ہو۔ اس سسٹم کو ابتدائی اور حتمی دونوں منظوری مل جانے کے بعد IT ڈیپارٹمنٹ کو ایک خودکار ای میل بھیجنے کی ضرورت ہوتی ہے، اس شرط کے تحت کہ درخواست کی حیثیت "منظور شدہ" میں منتقل ہوجائے۔

تاہم، Google Apps Script کے ذریعے اس عمل کو خودکار کرنا ایک عجیب چیلنج پیش کرتا ہے۔ بلٹ ان "onEdit" ٹرگر، جو ای میل ڈسپیچ شروع کرنے کے لیے اہم ہے، پروگرام کے لحاظ سے کی گئی تبدیلیوں کے لیے فعال نہیں ہوتا ہے—صرف ان لوگوں کے لیے جو براہ راست صارف کے تعامل کے ذریعے کی گئی ہیں۔ یہ حد ان معاملات میں ایک اہم رکاوٹ پیدا کرتی ہے جہاں اسکرپٹ کے ذریعہ "زیر التواء" سے "منظور شدہ" تک اسٹیٹس اپ ڈیٹ کیا جاتا ہے۔ یہ تعارف گوگل شیٹس پر مبنی منظوری کے ورک فلو کے اندر بغیر کسی رکاوٹ کے خودکار ای میل اطلاعات کو مربوط کرنے کے حل تلاش کرنے کی بنیاد رکھتا ہے، بروقت مواصلت اور عمل کی کارکردگی کو یقینی بناتا ہے۔

کمانڈ تفصیل
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Approvals") فعال اسپریڈشیٹ تک رسائی حاصل کرتا ہے اور "منظوریاں" نامی شیٹ بازیافت کرتا ہے۔
getDataRange() شیٹ میں تمام ڈیٹا کو رینج کے طور پر حاصل کرتا ہے۔
getValues() رینج میں سیلز کی قدروں کو دو جہتی صف کے بطور لوٹاتا ہے۔
MailApp.sendEmail(email, subject, body) مخصوص وصول کنندہ، موضوع اور باڈی کے ساتھ ای میل بھیجتا ہے۔
sheet.getRange(i + 1, emailSentColumn + 1).setValue("sent") ایک مخصوص سیل کی قدر کو "بھیجا" پر سیٹ کرتا ہے، یہ بتاتا ہے کہ ای میل بھیجی گئی ہے۔
google.script.run کسی ویب ایپ سے Google Apps Script فنکشن کو کال کرتا ہے۔
withSuccessHandler(function()) google.script.run کال کامیاب ہونے پر چلانے کے لیے ایک فنکشن بتاتا ہے۔
withFailureHandler(function(err)) اگر google.script.run کال ناکام ہو جاتی ہے تو اسے چلانے کے لیے ایک فنکشن کی وضاحت کرتا ہے، غلطی کو دلیل کے طور پر پاس کرنا۔
updateStatusInSheet(approvalId, status) ایک حسب ضرورت Google Apps اسکرپٹ فنکشن (کوڈ کے ٹکڑوں میں نہیں دکھایا گیا) جو اسپریڈشیٹ میں منظوری کی درخواست کی حیثیت کو اپ ڈیٹ کرے گا۔

خودکار ای میل میکانزم کو سمجھنا

خودکار ای میل ٹرگر سسٹم جسے میں نے Google Sheets کے لیے ڈیزائن کیا ہے اس کا مقصد بنیادی طور پر تنظیموں کے اندر منظوری کے عمل کو ہموار کرنا ہے، خاص طور پر ایسے معاملات کے لیے جن کو آگے بڑھنے سے پہلے متعدد منظور کنندگان کی رضامندی کی ضرورت ہوتی ہے۔ حل کا پہلا حصہ، جو Google Apps اسکرپٹ میں تیار کیا گیا ہے، براہ راست Google Sheets کے ساتھ بات چیت کرتا ہے جہاں منظوری کے حالات ریکارڈ کیے جاتے ہیں۔ اسکرپٹ قطاروں کے لیے پوری "منظوریوں" کی شیٹ کو چیک کرتا ہے جہاں منظور کنندہ 1 اور منظور کنندہ 2 دونوں نے اپنی منظوری کو "منظور شدہ" کے بطور نشان زد کیا ہے۔ یہ بہت اہم ہے کیونکہ اسکرپٹ کا مقصد صرف اس وقت کام کرنا ہے جب دونوں منظوری مل جاتی ہے، جو مکمل طور پر مجاز درخواست کی عکاسی کرتی ہے۔ اس کو حاصل کرنے کے لیے، اسکرپٹ ہر قطار میں دہراتی ہے، ہر منظور کنندہ کے فیصلے اور درخواست کی مجموعی حیثیت کے لیے مخصوص کالموں کی جانچ کرتی ہے۔ جب کوئی قطار معیار پر پورا اترتی ہے — دونوں منظور کنندگان نے منظوری دے دی ہے، اور اسٹیٹس کو "منظور شدہ" پر سیٹ کر دیا جاتا ہے — تو اسکرپٹ آئی ٹی ڈیپارٹمنٹ کو ای میل بھیجتا ہے۔ یہ ای میل اطلاع میل ایپ سروس کا استعمال کرتے ہوئے بھیجا جاتا ہے، جو گوگل ایپس اسکرپٹ کا ایک حصہ ہے جو اسکرپٹ سے براہ راست ای میل بھیجنے کی سہولت فراہم کرتا ہے۔ یہ یقینی بناتا ہے کہ آئی ٹی ڈیپارٹمنٹ کو منظور شدہ درخواست کے بارے میں فوری طور پر مطلع کیا جائے، جس سے فوری کارروائی کی اجازت دی جائے۔

ویب ایپلیکیشن کے ذریعے منظوری کی حیثیت کو اپ ڈیٹ کرنے کا طریقہ کار خودکار ای میل سسٹم کے فرنٹ اینڈ ہم منصب کے طور پر کام کرتا ہے۔ یہ جزو خاص طور پر اہم ہے کیونکہ Google Sheets میں "onEdit" ٹرگر صرف دستی ترامیم کا جواب دیتا ہے، پروگرامی تبدیلیوں کا نہیں۔ اس حد کو روکنے کے لیے، ایک سادہ ویب انٹرفیس صارفین کو منظوری کی درخواست کی حیثیت کو اپ ڈیٹ کرنے کی اجازت دیتا ہے۔ بات چیت پر، جیسے کہ کسی درخواست کو "منظور شدہ" کے بطور نشان زد کرنے کے لیے بٹن پر کلک کرنا، ویب ایپ `google.script.run` کمانڈ کے ذریعے Google Apps Script فنکشن کو کال کرتی ہے۔ یہ کمانڈ طاقتور ہے کیونکہ یہ اسکرپٹ کو ویب انٹرفیس سے موصول ہونے والے ان پٹس کی بنیاد پر گوگل شیٹ میں کارروائیاں کرنے کے قابل بناتا ہے، مؤثر طریقے سے دستی ترامیم کی نقل کرتا ہے۔ اس کے بعد اسکرپٹ تبدیلیوں کی جانچ کرنے اور ای میل بھیجنے کے لیے آگے بڑھ سکتا ہے جیسا کہ ڈیزائن کیا گیا ہے، جو "onEdit" ٹرگر کی حدود سے پیدا ہونے والے خلا کو ختم کرتا ہے۔ یہ دوہری اجزاء کا حل اس بات کو یقینی بناتا ہے کہ منظوری کا عمل موثر اور موافقت پذیر ہے، ورک فلو میں دستی اور خودکار مداخلتوں کی ضرورت کو پورا کرتا ہے۔

اسپریڈ شیٹ ایپلی کیشنز میں منظوری کے مراحل کے لیے ای میل اطلاعات کو ہموار کرنا

بیک اینڈ پروسیسنگ کے لیے گوگل ایپس اسکرپٹ

function checkApprovalsAndSendEmail() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Approvals");
  var range = sheet.getDataRange();
  var values = range.getValues();
  var emailSentColumn = 5; // Assuming the fifth column tracks email sending status
  var approver1Column = 2; // Column for approver 1's status
  var approver2Column = 3; // Column for approver 2's status
  var statusColumn = 4; // Column for the overall status
  for (var i = 1; i < values.length; i++) {
    var row = values[i];
    if (row[statusColumn] == "approved" && row[emailSentColumn] != "sent") {
      if (row[approver1Column] == "approved" && row[approver2Column] == "approved") {
        var email = "it@domain.com";
        var subject = "Approval Request Completed";
        var body = "The approval request for " + row[0] + " has been fully approved.";
        MailApp.sendEmail(email, subject, body);
        sheet.getRange(i + 1, emailSentColumn + 1).setValue("sent");
      }
    }
  }
}

ویب ایپ کے ذریعے منظوری کی حیثیت کو خود بخود اپ ڈیٹ کرنا

فرنٹ اینڈ انٹرایکشن کے لیے ایچ ٹی ایم ایل اور جاوا اسکرپٹ

<!DOCTYPE html>
<html>
<head>
<title>Approval Status Updater</title>
</head>
<body>
<script>
function updateApprovalStatus(approvalId, status) {
  google.script.run
    .withSuccessHandler(function() {
      alert('Status updated successfully.');
    })
    .withFailureHandler(function(err) {
      alert('Failed to update status: ' + err.message);
    })
    .updateStatusInSheet(approvalId, status);
}
</script>
<input type="button" value="Update Status" onclick="updateApprovalStatus('123', 'approved');" />
</body>
</html>

اسپریڈشیٹ آٹومیشن کے ذریعے ورک فلو کی کارکردگی کو بڑھانا

دو قدمی منظوری کے عمل کے حصے کے طور پر گوگل شیٹس میں ای میل اطلاعات کو خودکار بنانے کا تصور تنظیمی ورک فلو کو ہموار کرنے کے لیے ایک نفیس طریقہ متعارف کراتا ہے۔ روایتی طور پر، منظوری کے سلسلے میں دستی مداخلت ایک اہم چیز رہی ہے، جس میں عمل کو آگے بڑھانے کے لیے انسانی اعمال کی ضرورت ہوتی ہے۔ تاہم، Google Apps اسکرپٹ کا فائدہ اٹھاتے ہوئے، ہم ایک ایسے ماڈل کی طرف موڑ دیتے ہیں جہاں اس طرح کی مداخلتوں کو کم سے کم کیا جاتا ہے، جس کی وجہ سے کارکردگی میں اضافہ ہوتا ہے اور غلطی میں کمی آتی ہے۔ یہ تبدیلی نہ صرف منظوری کے مجموعی عمل کو تیز کرتی ہے بلکہ اس بات کو بھی یقینی بناتی ہے کہ اطلاعات کو درست موڑ پر روانہ کیا جائے، خاص طور پر جب دونوں منظوری دینے والے فریقین نے ایک درخواست منظور کی ہو، جس کی حیثیت کو "منظور شدہ" میں منتقلی سے نشان زد کیا گیا ہو۔

یہ نقطہ نظر اسپریڈشیٹ کے اندر پروگرام کے لحاظ سے منظم اسٹیٹس اپ ڈیٹس کی اہمیت کو واضح کرتا ہے، ایک ایسا طریقہ جو "onEdit" ٹرگر کی حدود کو ختم کرتا ہے۔ اپنی مرضی کے مطابق اسکرپٹ کو استعمال کرکے جو اسٹیٹس کی تبدیلیوں کو سنتا ہے اور اس کے مطابق ای میل اطلاعات بھیجتا ہے، تنظیمیں دستی رکاوٹ کو دور کرسکتی ہیں، اس طرح ان کے آپریشنل ورک فلو کے ایک اہم جز کو خودکار بناتی ہیں۔ یہ طریقہ کار محور نہ صرف منظوری کے عمل کو بہتر بناتا ہے بلکہ اسکیل ایبلٹی اور موافقت کی سطح کو بھی متعارف کراتا ہے جو پہلے دستی عمل کے ذریعے ناقابل حصول تھا، جس سے ایک زیادہ متحرک اور ذمہ دار ورک فلو مینجمنٹ سسٹم کا دروازہ کھلتا ہے۔

اسپریڈشیٹ آٹومیشن پر اکثر پوچھے گئے سوالات

  1. سوال: کیا آٹومیشن کا عمل کسی بھی گوگل شیٹس دستاویز کے لیے کام کر سکتا ہے؟
  2. جواب: ہاں، آٹومیشن کو کسی بھی گوگل شیٹس دستاویز پر لاگو کیا جا سکتا ہے، بشرطیکہ اس مخصوص دستاویز کے ڈھانچے کے لیے اسکرپٹ کو صحیح طریقے سے ترتیب دیا گیا ہو۔
  3. سوال: کیا ان اسکرپٹس کو نافذ کرنے کے لیے کوڈنگ کا علم درکار ہے؟
  4. جواب: JavaScript میں بنیادی کوڈنگ کا علم Google Apps Script میں اسکرپٹ کو حسب ضرورت بنانے اور لاگو کرنے کے لیے فائدہ مند ہے۔
  5. سوال: کیا خودکار ای میل ٹرگر متعدد منظوری کی درخواستوں کو بیک وقت سنبھال سکتا ہے؟
  6. جواب: ہاں، اسکرپٹ ڈیٹا کی قطاروں کے ذریعے تکرار کرکے اور ہر درخواست کی منظوری کی حیثیت کی جانچ کرکے متعدد درخواستوں کو سنبھال سکتا ہے۔
  7. سوال: خودکار عمل کتنا محفوظ ہے؟
  8. جواب: یہ عمل کسی بھی گوگل شیٹس اور گوگل ایپس اسکرپٹ آپریشن کی طرح محفوظ ہے، ڈیٹا کی حفاظت کے لیے گوگل کے معیاری حفاظتی پروٹوکول کا استعمال کرتے ہوئے۔
  9. سوال: کیا اسکرپٹ متعدد ای میل پتوں پر اطلاعات بھیج سکتا ہے؟
  10. جواب: ہاں، MailApp.sendEmail فنکشن میں وصول کنندہ کے پیرامیٹر کو ایڈجسٹ کرکے متعدد ای میل پتوں پر اطلاعات بھیجنے کے لیے اسکرپٹ میں ترمیم کی جاسکتی ہے۔

بصیرت اور آگے کے اقدامات کا خلاصہ

دو قدمی منظوری کے عمل کے لیے گوگل شیٹس کے اندر خودکار ای میل ٹرگرز کی کھوج سے اس طرح کے ورک فلو کو ہموار کرنے کے لیے حدود اور ممکنہ حل کے بارے میں اہم بصیرت کا پتہ چلتا ہے۔ پہلے سے طے شدہ onEdit ٹرگر کی پروگرامی تبدیلیوں کو پہچاننے میں ناکامی کے لیے تخلیقی اسکرپٹنگ اپروچز کی ضرورت ہوتی ہے تاکہ یہ یقینی بنایا جا سکے کہ اطلاعات صرف اس وقت بھیجی جائیں جب منظوریوں کی مکمل تصدیق ہو جائے۔ یہ منظر نامہ گوگل شیٹس کے مقامی فنکشنلٹیز میں خلاء کو پُر کرنے کے لیے حسب ضرورت Google Apps اسکرپٹ حل کی اہمیت کو واضح کرتا ہے، جس سے منظوری کے مزید متحرک اور جوابی عمل کی ترقی ممکن ہو سکتی ہے۔ خصوصی محرکات اور فنکشنز بنانے کے لیے Google Apps Script کا فائدہ اٹھا کر، تنظیمیں اپنی آپریشنل کارکردگی اور مواصلات کے بہاؤ کو بڑھا سکتی ہیں، اس بات کو یقینی بناتے ہوئے کہ کلیدی اسٹیک ہولڈرز کو منظوری کے مراحل کی تکمیل پر فوری طور پر مطلع کیا جائے۔ بحث پلیٹ فارم کی حدود میں موافقت کی ضرورت پر روشنی ڈالتی ہے، خودکار نظاموں کے اندر مسائل کے حل کے لیے ایک فعال نقطہ نظر کی حوصلہ افزائی کرتی ہے۔