এমনকি সবচেয়ে অভিজ্ঞ ডেভেলপাররাও প্রথম চেষ্টাতেই খুব কমই কোড সঠিকভাবে লেখেন, যার ফলে সমস্যা সমাধান ডেভেলপমেন্ট প্রক্রিয়ার একটি গুরুত্বপূর্ণ অংশ হয়ে ওঠে। এই বিভাগে আমরা কিছু কৌশল আলোচনা করব যা আপনাকে আপনার স্ক্রিপ্টের ত্রুটি খুঁজে পেতে, বুঝতে এবং ডিবাগ করতে সাহায্য করতে পারে।
ত্রুটি বার্তা
যখন আপনার স্ক্রিপ্ট একটি ত্রুটির সম্মুখীন হয়, তখন একটি ত্রুটি বার্তা প্রদর্শিত হয়। বার্তাটির সাথে সমস্যা সমাধানের জন্য ব্যবহৃত একটি লাইন নম্বর থাকে। এইভাবে দুটি মৌলিক ধরণের ত্রুটি প্রদর্শিত হয়: সিনট্যাক্স ত্রুটি এবং রানটাইম ত্রুটি ।
বাক্য গঠন ত্রুটি
জাভাস্ক্রিপ্ট ব্যাকরণ অনুসরণ না করে এমন কোড লেখার কারণে সিনট্যাক্স ত্রুটি ঘটে এবং স্ক্রিপ্টটি সংরক্ষণ করার চেষ্টা করার সাথে সাথে ত্রুটিগুলি সনাক্ত করা হয়। উদাহরণস্বরূপ, নিম্নলিখিত কোড স্নিপেটে একটি সিনট্যাক্স ত্রুটি রয়েছে:
function emailDataRow(rowNumber) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var rowData = data[rowNumber-1].join(" ";
MailApp.sendEmail('john@example.com',
'Data in row ' + rowNumber,
rowData);
}
এখানে সিনট্যাক্স সমস্যা হল চতুর্থ লাইনের শেষে একটি ) অক্ষর অনুপস্থিত। যখন আপনি স্ক্রিপ্টটি সংরক্ষণ করার চেষ্টা করবেন তখন আপনি নিম্নলিখিত ত্রুটিটি পাবেন:
আর্গুমেন্ট তালিকার পরে ) অনুপস্থিত। (লাইন ৪)
এই ধরণের ত্রুটিগুলি সাধারণত সমস্যা সমাধান করা সহজ, কারণ এগুলি তাৎক্ষণিকভাবে পাওয়া যায় এবং সাধারণত এর সহজ কারণ থাকে। আপনি এমন কোনও ফাইল সংরক্ষণ করতে পারবেন না যাতে সিনট্যাক্স ত্রুটি থাকে, যার অর্থ হল শুধুমাত্র বৈধ কোড আপনার প্রকল্পে সংরক্ষণ করা হয়।
রানটাইম ত্রুটি
এই ত্রুটিগুলি কোনও ফাংশন বা ক্লাস ভুলভাবে ব্যবহারের কারণে ঘটে এবং স্ক্রিপ্টটি চালানোর পরেই কেবল এটি সনাক্ত করা যায়। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি রানটাইম ত্রুটির কারণ হয়:
function emailDataRow(rowNumber) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var rowData = data[rowNumber-1].join(" ");
MailApp.sendEmail('john',
'Data in row ' + rowNumber,
rowData);
}
কোডটি সঠিকভাবে ফর্ম্যাট করা হয়েছে, কিন্তু MailApp.sendEmail কল করার সময় আমরা ইমেল ঠিকানার জন্য "john" মানটি পাস করছি। যেহেতু এটি একটি বৈধ ইমেল ঠিকানা নয়, তাই স্ক্রিপ্টটি চালানোর সময় নিম্নলিখিত ত্রুটিটি দেখা দেয়:
অবৈধ ইমেল: জন (লাইন ৫)
এই ত্রুটিগুলি সমাধান করা আরও কঠিন করে তোলে কারণ প্রায়শই আপনি যে ডেটা কোনও ফাংশনে প্রেরণ করছেন তা কোডে লেখা হয় না, বরং স্প্রেডশিট, ফর্ম বা অন্যান্য বহিরাগত ডেটা উৎস থেকে নেওয়া হয়। নীচের ডিবাগিং কৌশলগুলি ব্যবহার করে আপনি এই ত্রুটিগুলির কারণ সনাক্ত করতে সহায়তা করতে পারেন।
সাধারণ ত্রুটি
নিচে সাধারণ ত্রুটি এবং তাদের কারণগুলির একটি তালিকা দেওয়া হল।
পরিষেবাটি অনেকবার চালু করা হয়েছে: <action name>
এই ত্রুটিটি নির্দেশ করে যে আপনি একটি নির্দিষ্ট কাজের জন্য আপনার দৈনিক কোটা অতিক্রম করেছেন। উদাহরণস্বরূপ, যদি আপনি একদিনে অনেক বেশি ইমেল পাঠান তবে আপনি এই ত্রুটির সম্মুখীন হতে পারেন। গ্রাহক, ডোমেন এবং প্রিমিয়ার অ্যাকাউন্টের জন্য কোটা বিভিন্ন স্তরে সেট করা আছে এবং Google এর পূর্ব ঘোষণা ছাড়াই যেকোনো সময় পরিবর্তন সাপেক্ষে। আপনি Apps Script কোটা ডকুমেন্টেশনে বিভিন্ন কাজের জন্য কোটা সীমা দেখতে পারেন।
সার্ভার উপলব্ধ নেই। অথবা সার্ভার ত্রুটি ঘটেছে, অনুগ্রহ করে আবার চেষ্টা করুন।
এই ত্রুটিগুলির কয়েকটি সম্ভাব্য কারণ রয়েছে:
- একটি Google সার্ভার বা সিস্টেম অস্থায়ীভাবে অনুপলব্ধ। কিছুক্ষণ অপেক্ষা করুন এবং আবার স্ক্রিপ্টটি চালানোর চেষ্টা করুন।
- আপনার স্ক্রিপ্টে একটি ত্রুটি আছে যার সাথে সম্পর্কিত কোনও ত্রুটি বার্তা নেই। আপনার স্ক্রিপ্টটি ডিবাগ করার চেষ্টা করুন এবং দেখুন সমস্যাটি আলাদা করতে পারেন কিনা।
- গুগল অ্যাপস স্ক্রিপ্টে একটি বাগ আছে যার কারণে এই ত্রুটি হচ্ছে। বাগ রিপোর্ট অনুসন্ধান এবং ফাইল করার নির্দেশাবলীর জন্য, বাগ দেখুন। নতুন বাগ ফাইল করার আগে, অন্যরা ইতিমধ্যে এটি রিপোর্ট করেছে কিনা তা অনুসন্ধান করুন।
এই কাজটি সম্পাদনের জন্য অনুমোদন প্রয়োজন।
এই ত্রুটিটি নির্দেশ করে যে স্ক্রিপ্টটি চালানোর জন্য প্রয়োজনীয় অনুমোদনের অভাব রয়েছে। যখন স্ক্রিপ্ট এডিটরে বা কাস্টম মেনু আইটেম থেকে একটি স্ক্রিপ্ট চালানো হয় তখন ব্যবহারকারীর কাছে একটি অনুমোদন ডায়ালগ উপস্থাপন করা হয়। তবে, যখন একটি স্ক্রিপ্ট একটি ট্রিগার থেকে চালানো হয়, একটি Google Sites পৃষ্ঠার সাথে এম্বেড করা হয়, অথবা একটি পরিষেবা হিসাবে চালানো হয়, তখন ডায়ালগটি উপস্থাপন করা যায় না এবং এই ত্রুটিটি দেখানো হয়।
স্ক্রিপ্টটি অনুমোদন করতে, স্ক্রিপ্ট এডিটরটি খুলুন এবং যেকোনো ফাংশন চালান। অনুমোদন প্রম্পটটি প্রদর্শিত হবে যাতে আপনি স্ক্রিপ্ট প্রকল্পটি অনুমোদন করতে পারেন। যদি স্ক্রিপ্টে নতুন অননুমোদিত পরিষেবা থাকে, তাহলে আপনাকে স্ক্রিপ্টটি পুনরায় অনুমোদন করতে হবে।
এই ত্রুটিটি প্রায়শই এমন ট্রিগারগুলির কারণে ঘটে যা ব্যবহারকারীর অনুমোদনের আগে সক্রিয় হয় অথবা তাদের অনুমোদনের মেয়াদ শেষ হয়ে যায়। যদি আপনার স্ক্রিপ্ট প্রকল্পে অ্যাক্সেস না থাকে (কারণ ত্রুটিটি আপনার ব্যবহৃত কোনও অ্যাড-অনের জন্য ঘটছে, উদাহরণস্বরূপ), আপনি সাধারণত অ্যাড-অনটি আবার ব্যবহার করে স্ক্রিপ্টটি অনুমোদিত করতে পারেন। যদি কোনও ট্রিগার সক্রিয় থাকে এবং এই ত্রুটির কারণ হয়, তাহলে আপনি নিম্নলিখিতগুলি করে আপনার ট্রিগারগুলি সরাতে পারেন:
- অ্যাপস স্ক্রিপ্ট প্রজেক্টের বাম দিকে, ট্রিগারস ক্লিক করুন।
- আপনি যে ট্রিগারটি সরাতে চান তার ডানদিকে, More > Delete trigger এ ক্লিক করুন।
আপনি অ্যাড-অনটি আনইনস্টল করে সমস্যাযুক্ত অ্যাড-অন ট্রিগারগুলিও সরাতে পারেন।
গ্রানুলার অনুমতির কারণেও এই ত্রুটিগুলি হতে পারে। অ্যাপস স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে ব্যবহারকারীর কাছ থেকে অনুপস্থিত অনুমতিগুলির জন্য অনুরোধ করবে, যদি না কোনও ট্রিগার দ্বারা এক্সিকিউশনটি চালু করা হয়। এই ত্রুটি থেকে ট্রিগার এক্সিকিউশনগুলিকে রক্ষা করতে আমাদের অনুমোদনের স্কোপ পৃষ্ঠাটি দেখুন।
অ্যাক্সেস অস্বীকৃত: DriveApp অথবা ডোমেন নীতি তৃতীয় পক্ষের Drive অ্যাপগুলিকে অক্ষম করেছে
Google Workspace ডোমেনের প্রশাসকরা তাদের ডোমেনের জন্য Drive API নিষ্ক্রিয় করার ক্ষমতা রাখেন, যা তাদের ব্যবহারকারীদের Google Drive অ্যাপ ইনস্টল এবং ব্যবহার করতে বাধা দেয়। এই সেটিং ব্যবহারকারীদের Drive পরিষেবা বা Advanced Drive পরিষেবা ব্যবহার করে এমন Apps Script অ্যাড-অন ব্যবহার করতে বাধা দেয় (এমনকি যদি অ্যাডমিন Drive API নিষ্ক্রিয় করার আগে স্ক্রিপ্টটি অনুমোদিত ছিল)।
তবে, যদি ড্রাইভ পরিষেবা ব্যবহার করে কোনও অ্যাড-অন বা ওয়েব অ্যাপ ডোমেন-ওয়াইড ইনস্টলেশনের জন্য প্রকাশিত হয় এবং অ্যাডমিনিস্ট্রেটর দ্বারা ডোমেনের কিছু বা সমস্ত ব্যবহারকারীর জন্য ইনস্টল করা হয়, তাহলে ডোমেনে ড্রাইভ API অক্ষম থাকলেও স্ক্রিপ্টটি সেই ব্যবহারকারীদের জন্য কাজ করে।
স্ক্রিপ্টটির সক্রিয় ব্যবহারকারীর পরিচয় পাওয়ার অনুমতি নেই।
নির্দেশ করে যে সক্রিয় ব্যবহারকারীর পরিচয় এবং ইমেল স্ক্রিপ্টে উপলব্ধ নয়। এই সতর্কতা Session.getActiveUser() এ কল করার ফলে আসে। যদি স্ক্রিপ্টটি AuthMode.FULL ব্যতীত অন্য কোনও অনুমোদন মোডে চলমান থাকে তবে এটি Session.getEffectiveUser() এ কল করার ফলেও হতে পারে। যদি এই সতর্কতা সংকেত দেওয়া হয়, তাহলে User.getEmail() এ পরবর্তী কলগুলি কেবল "" ফেরত পাঠাবে।
স্ক্রিপ্টটি যে অনুমোদন মোডে চলছে তার উপর নির্ভর করে এই সতর্কতার সমস্যা সমাধানের বিভিন্ন উপায় রয়েছে। অনুমোদন মোডটি e ইভেন্ট প্যারামিটারের authMode বৈশিষ্ট্য হিসাবে ট্রিগার করা ফাংশনগুলিতে প্রকাশিত হয়।
-
AuthMode.FULLতে,Session.getEffectiveUser()ব্যবহার করার কথা বিবেচনা করুন। -
AuthMode.LIMITEDএ, নিশ্চিত করুন যে মালিক স্ক্রিপ্টটি অনুমোদিত করেছেন। - অন্যান্য অনুমোদন মোডে, উভয় পদ্ধতিতে কল করা এড়িয়ে চলুন।
- আপনি যদি একজন Google Workspace গ্রাহক হন যিনি নতুন করে ইনস্টলযোগ্য ট্রিগার থেকে এই সতর্কতার সম্মুখীন হচ্ছেন, তাহলে নিশ্চিত করুন যে ট্রিগারটি আপনার প্রতিষ্ঠানের একজন ব্যবহারকারী হিসেবে চলছে।
লাইব্রেরি অনুপস্থিত।
যদি আপনি আপনার স্ক্রিপ্টে একটি জনপ্রিয় লাইব্রেরি যোগ করেন, তাহলে আপনি একটি ত্রুটি বার্তা পেতে পারেন যেখানে বলা হবে যে এটি অনুপস্থিত, যদিও লাইব্রেরিটি আপনার স্ক্রিপ্টের জন্য নির্ভরতা হিসাবে তালিকাভুক্ত। কারণ হতে পারে যে একই সময়ে অনেক লোক লাইব্রেরি অ্যাক্সেস করছে। এই ত্রুটি এড়াতে, নিম্নলিখিত সমাধানগুলির মধ্যে একটি চেষ্টা করুন:
- লাইব্রেরির কোডটি আপনার স্ক্রিপ্টে কপি করে পেস্ট করুন এবং লাইব্রেরির নির্ভরতা সরিয়ে ফেলুন।
- লাইব্রেরি স্ক্রিপ্টটি কপি করুন এবং আপনার অ্যাকাউন্ট থেকে এটিকে লাইব্রেরি হিসেবে স্থাপন করুন। আপনার মূল স্ক্রিপ্টের নির্ভরতা পাবলিক স্ক্রিপ্টের পরিবর্তে নতুন লাইব্রেরিতে আপডেট করতে ভুলবেন না।
লাইব্রেরি সংস্করণ অথবা স্থাপনার সংস্করণ অনুপস্থিত থাকার কারণে ত্রুটি ঘটেছে। ত্রুটি কোড Not_Found
এই ত্রুটি বার্তাটি নিম্নলিখিতগুলির মধ্যে একটি নির্দেশ করে:
- স্ক্রিপ্টের ডিপ্লোয়েড ভার্সনটি মুছে ফেলা হয়েছে। আপনার স্ক্রিপ্টের ডিপ্লোয়েড ভার্সনটি আপডেট করতে, একটি ভার্সনড ডিপ্লয়মেন্ট সম্পাদনা করুন দেখুন।
- স্ক্রিপ্টটি যে লাইব্রেরিটি ব্যবহার করে তার সংস্করণটি মুছে ফেলা হয়েছে। কোন লাইব্রেরিটি অনুপস্থিত তা পরীক্ষা করতে, লাইব্রেরির নামের পাশে, More > Open in new tab এ ক্লিক করুন। অনুপস্থিত লাইব্রেরিটি একটি ত্রুটি বার্তা দেয়। লাইব্রেরিটি খুঁজে পাওয়ার পরে আপনাকে আপডেট করতে হবে, নিম্নলিখিত পদক্ষেপগুলির মধ্যে একটি নিন:
- ভিন্ন সংস্করণ ব্যবহার করার জন্য লাইব্রেরি আপডেট করুন। লাইব্রেরি আপডেট করুন দেখুন।
- আপনার স্ক্রিপ্ট প্রকল্প এবং কোড থেকে মুছে ফেলা লাইব্রেরিটি সরান। একটি লাইব্রেরি সরান দেখুন।
- আপনার স্ক্রিপ্ট যে লাইব্রেরি ব্যবহার করে তার স্ক্রিপ্টে অন্য একটি লাইব্রেরি রয়েছে যা একটি মুছে ফেলা সংস্করণ ব্যবহার করে। নিম্নলিখিত পদক্ষেপগুলির মধ্যে একটি নিন:
- আপনার স্ক্রিপ্ট যে লাইব্রেরি ব্যবহার করে তাতে যদি আপনার সম্পাদনা অ্যাক্সেস থাকে, তাহলে সেই স্ক্রিপ্টের সেকেন্ডারি লাইব্রেরিটি একটি বিদ্যমান সংস্করণে আপডেট করুন।
- ভিন্ন সংস্করণ ব্যবহার করার জন্য লাইব্রেরি আপডেট করুন। লাইব্রেরি আপডেট করুন দেখুন।
- আপনার স্ক্রিপ্ট প্রকল্প এবং কোড থেকে লাইব্রেরিটি সরান। একটি লাইব্রেরি সরান দেখুন।
ত্রুটি 400: উন্নত পরিষেবা দিয়ে Google Chat API কল করার সময় invalid_scope
যদি আপনি Error 400: invalid_scope এর সম্মুখীন হন যেখানে Some requested scopes cannot be shown " ত্রুটি বার্তাটি থাকে, তাহলে এর অর্থ হল আপনি Apps Script প্রকল্পের appsscript.json ফাইলে কোনও অনুমোদন স্কোপ নির্দিষ্ট করেননি। বেশিরভাগ ক্ষেত্রে, Apps Script স্বয়ংক্রিয়ভাবে নির্ধারণ করে যে কোনও স্ক্রিপ্টের কোন স্কোপ প্রয়োজন, কিন্তু যখন আপনি Chat উন্নত পরিষেবা ব্যবহার করেন, তখন আপনাকে অবশ্যই আপনার স্ক্রিপ্ট যে অনুমোদন স্কোপ ব্যবহার করে তা আপনার Apps Script প্রকল্পের ম্যানিফেস্ট ফাইলে ম্যানুয়ালি যোগ করতে হবে। স্পষ্ট স্কোপ সেট করা দেখুন।
ত্রুটিটি সমাধান করতে, oauthScopes অ্যারের অংশ হিসেবে Apps Script প্রকল্পের appsscript.json ফাইলে উপযুক্ত অনুমোদনের স্কোপ যোগ করুন। উদাহরণস্বরূপ, spaces.messages.create পদ্ধতিটি কল করতে, নিম্নলিখিতগুলি যোগ করুন:
"oauthScopes": [
"https://www.googleapis.com/auth/chat.messages.create"
]
আপনার অ্যাডমিন <URL> এ UrlFetch কল করার অনুমতি দেয় না।
অ্যাপস স্ক্রিপ্টের মাধ্যমে আপনি কোন এক্সটার্নাল ডোমেন অ্যাক্সেস করতে পারবেন তা নিয়ন্ত্রণ করতে Google Workspace অ্যাডমিনিস্ট্রেটররা অ্যাডমিন কনসোলে একটি অ্যালাউলিস্ট চালু করতে পারেন।
সমস্যাটি সমাধানের জন্য, আপনার অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন যাতে তারা URLটি অ্যালাউলিস্টে যোগ করতে পারে।
ডিবাগিং
সব ভুলের কারণে ত্রুটির বার্তা প্রদর্শিত হয় না। আরও সূক্ষ্ম ত্রুটি থাকতে পারে যেখানে কোডটি প্রযুক্তিগতভাবে সঠিক এবং কার্যকর করা যেতে পারে, কিন্তু ফলাফল আপনার প্রত্যাশা অনুযায়ী নয়। এই ধরনের পরিস্থিতি মোকাবেলা করার এবং আপনার প্রত্যাশা অনুযায়ী চলমান না থাকা স্ক্রিপ্টটি আরও তদন্ত করার জন্য এখানে কিছু কৌশল দেওয়া হল।
লগিং
ডিবাগিং করার সময়, স্ক্রিপ্ট প্রকল্পটি কার্যকর করার সময় তথ্য রেকর্ড করা প্রায়শই সহায়ক। তথ্য লগ করার জন্য Google Apps Script-এর দুটি পদ্ধতি রয়েছে: ক্লাউড লগিং পরিষেবা এবং আরও মৌলিক লগার এবং কনসোল পরিষেবা যা অ্যাপস স্ক্রিপ্ট সম্পাদকে অন্তর্নির্মিত।
আরও বিস্তারিত জানার জন্য লগিং নির্দেশিকা দেখুন।
ত্রুটি প্রতিবেদন
রানটাইম ত্রুটির কারণে ঘটে যাওয়া ব্যতিক্রমগুলি Google Cloud Error Reporting পরিষেবা ব্যবহার করে স্বয়ংক্রিয়ভাবে রেকর্ড করা হয়। এই পরিষেবাটি আপনাকে আপনার স্ক্রিপ্ট প্রকল্পের তৈরি ব্যতিক্রম বার্তাগুলি অনুসন্ধান এবং ফিল্টার করতে দেয়।
ত্রুটি প্রতিবেদন অ্যাক্সেস করতে, Google Cloud Platform কনসোলে View Cloud লগ এবং ত্রুটি প্রতিবেদন দেখুন।
মৃত্যুদণ্ড
প্রতিবার যখন আপনি একটি স্ক্রিপ্ট চালান, অ্যাপস স্ক্রিপ্ট ক্লাউড লগ সহ কার্যকরকরণের একটি রেকর্ড তৈরি করে। এই রেকর্ডগুলি আপনাকে বুঝতে সাহায্য করতে পারে যে আপনার স্ক্রিপ্ট কোন ক্রিয়া সম্পাদন করেছে।
অ্যাপস স্ক্রিপ্ট প্রজেক্টে আপনার স্ক্রিপ্টের এক্সিকিউশন দেখতে, বাম দিকে, এক্সিকিউশন ক্লিক করুন।
অ্যাপস স্ক্রিপ্ট পরিষেবার স্থিতি পরীক্ষা করা হচ্ছে
যদিও বিরল, কখনও কখনও নির্দিষ্ট Google Workspace পরিষেবাগুলি (যেমন Gmail বা Drive) সাময়িক সমস্যার সম্মুখীন হয় যার ফলে পরিষেবা বিঘ্নিত হতে পারে। যখন এটি ঘটে, তখন এই পরিষেবাগুলির সাথে ইন্টারঅ্যাক্ট করে এমন Apps Script প্রকল্পগুলি প্রত্যাশা অনুযায়ী কাজ নাও করতে পারে।
গুগল ওয়ার্কস্পেস স্ট্যাটাস ড্যাশবোর্ড দেখে আপনি গুগল ওয়ার্কস্পেস পরিষেবায় কোনও বিভ্রাট আছে কিনা তা পরীক্ষা করতে পারেন। যদি বর্তমানে কোনও বিভ্রাট দেখা দেয়, তাহলে হয় এটি সমাধানের জন্য অপেক্ষা করুন অথবা গুগল ওয়ার্কস্পেস সহায়তা কেন্দ্র বা গুগল ওয়ার্কস্পেস জ্ঞাত সমস্যা ডকুমেন্টেশনে অতিরিক্ত সাহায্য নিন।
ডিবাগার এবং ব্রেকপয়েন্ট ব্যবহার করুন
আপনার স্ক্রিপ্টে সমস্যাগুলি সনাক্ত করার জন্য, আপনি এটি ডিবাগ মোডে চালাতে পারেন। ডিবাগ মোডে চালানো হলে, একটি স্ক্রিপ্ট যখন একটি ব্রেকপয়েন্টে আঘাত করে তখন বিরতি দেয়, যা আপনার স্ক্রিপ্টে হাইলাইট করা একটি লাইন যা আপনার মনে হয় সমস্যা হতে পারে। যখন একটি স্ক্রিপ্ট বিরতি দেয় তখন এটি সেই সময়ে প্রতিটি ভেরিয়েবলের মান প্রদর্শন করে, যা আপনাকে অনেক লগিং স্টেটমেন্ট যোগ না করেই স্ক্রিপ্টের অভ্যন্তরীণ কার্যকারিতা পরীক্ষা করার অনুমতি দেয়।
একটি ব্রেকপয়েন্ট যোগ করুন
একটি ব্রেকপয়েন্ট যোগ করতে, যে লাইনে ব্রেকপয়েন্ট যোগ করতে চান তার লাইন নম্বরের উপর কার্সার রাখুন। লাইন নম্বরের বাম দিকে, বৃত্তে ক্লিক করুন। নিচের ছবিতে একটি স্ক্রিপ্টে যোগ করা ব্রেকপয়েন্টের একটি উদাহরণ দেখানো হয়েছে:

ডিবাগ মোডে একটি স্ক্রিপ্ট চালান
ডিবাগ মোডে স্ক্রিপ্টটি চালাতে, এডিটরের উপরে ডিবাগ এ ক্লিক করুন।
স্ক্রিপ্টটি ব্রেকপয়েন্ট সহ লাইনটি চালানোর আগে এটি বিরতি দেয় এবং ডিবাগ তথ্যের একটি টেবিল প্রদর্শন করে। আপনি এই টেবিলটি ব্যবহার করে প্যারামিটারের মান এবং বস্তুতে সংরক্ষিত তথ্যের মতো ডেটা পরিদর্শন করতে পারেন।
স্ক্রিপ্টটি কীভাবে চালানো হবে তা নিয়ন্ত্রণ করতে, ডিবাগার প্যানেলের শীর্ষে, "স্টেপ ইন", "স্টেপ ওভার" এবং "স্টেপ আউট" বোতামগুলি ব্যবহার করুন। এগুলি আপনাকে একবারে এক লাইনে স্ক্রিপ্টটি চালাতে এবং সময়ের সাথে সাথে মানগুলি কীভাবে পরিবর্তিত হয় তা পরীক্ষা করতে দেয়।
ত্রুটি : বর্তমান লাইনের জন্য সোর্স কোড উপলব্ধ নেই।

যখন একটি সক্রিয় ডিবাগিং ফাইল উপলব্ধ না থাকে তখন এই ত্রুটিটি দেখা দেয়। Google Apps Script স্ক্রিপ্ট এডিটরে গতিশীলভাবে জেনারেটেড JavaScript (JS) স্ক্রিপ্ট প্রদর্শন সমর্থন করে না, যেমন eval() এবং new Function() ব্যবহার করে তৈরি করা। এই স্ক্রিপ্টগুলি V8 ইঞ্জিনের মধ্যে তৈরি এবং কার্যকর করা হয় কিন্তু এডিটরে স্বতন্ত্র ফাইল হিসাবে উপস্থাপন করা হয় না। আপনি যদি এই স্ক্রিপ্টগুলিতে পদক্ষেপ নেন, তাহলে আপনি এই ত্রুটির সম্মুখীন হবেন।
উদাহরণস্বরূপ, নিম্নলিখিত কোডটি বিবেচনা করুন:
function myFunction() {
eval('a=2');
}
যখন eval() ব্যবহার করা হয়, তখন এর আর্গুমেন্টকে JS কোড হিসেবে বিবেচনা করা হয় এবং V8 ইঞ্জিনের ভিতরে একটি গতিশীলভাবে তৈরি স্ক্রিপ্ট হিসেবে চালানো হয়। যদি আপনি eval() এ ধাপে ধাপে প্রবেশ করেন, তাহলে এই ত্রুটিটি দেখা যাবে। যদি স্ক্রিপ্টটিতে একটি //# sourceURL মন্তব্য থাকে, তাহলে এর নাম কল স্ট্যাকে দেখানো হবে। অন্যথায়, এটি একটি নামহীন এন্ট্রি হিসেবে প্রদর্শিত হবে।
ত্রুটি বার্তা থাকা সত্ত্বেও, ডিবাগিং সেশন সক্রিয় থাকে এবং এক্সিকিউশন চলতে পারে। এগিয়ে যাওয়ার জন্য, স্টেপ ইন, স্টেপ আউট বা এক্সিকিউশন পুনরায় শুরু করুন। তবে, যতক্ষণ এক্সিকিউশনটি ডায়নামিক স্ক্রিপ্টের আওতার মধ্যে থাকে ততক্ষণ এই ত্রুটিটি প্রদর্শিত হতে থাকে। এক্সিকিউশনটি ডায়নামিক স্ক্রিপ্ট থেকে বেরিয়ে যাওয়ার পরে, এই ত্রুটি ছাড়াই ডিবাগিং চলতে থাকে।
একাধিক গুগল অ্যাকাউন্টের সমস্যা
আপনি যদি একই সময়ে একাধিক Google অ্যাকাউন্টে লগ ইন করেন, তাহলে আপনার অ্যাড-অন এবং ওয়েব অ্যাপ অ্যাক্সেস করতে সমস্যা হতে পারে। মাল্টি-লগইন, অথবা একসাথে একাধিক Google অ্যাকাউন্টে লগ ইন করা, অ্যাপস স্ক্রিপ্ট, অ্যাড-অন বা ওয়েব অ্যাপের জন্য সমর্থিত নয়।
একাধিক অ্যাকাউন্টে লগ ইন করে যদি আপনি অ্যাপস স্ক্রিপ্ট এডিটরটি খোলেন , তাহলে গুগল আপনাকে যে অ্যাকাউন্টটি দিয়ে এগিয়ে যেতে চান তা বেছে নিতে অনুরোধ করবে।
যদি আপনি একটি ওয়েব অ্যাপ বা অ্যাড-অন খুলেন এবং একাধিক লগইন সমস্যার সম্মুখীন হন, তাহলে নিম্নলিখিত সমাধানগুলির মধ্যে একটি চেষ্টা করে দেখুন:
- আপনার সমস্ত গুগল অ্যাকাউন্ট থেকে লগ আউট করুন এবং শুধুমাত্র সেই অ্যাকাউন্টে লগ ইন করুন যেখানে আপনি যে অ্যাড-অন বা ওয়েব অ্যাপটি অ্যাক্সেস করতে চান।
- গুগল ক্রোমে একটি ছদ্মবেশী উইন্ডো খুলুন, অথবা সমতুল্য একটি ব্যক্তিগত ব্রাউজিং উইন্ডো খুলুন, এবং যে গুগল অ্যাকাউন্টে আপনি যে অ্যাড-অন বা ওয়েব অ্যাপটি অ্যাক্সেস করতে চান তাতে লগ ইন করুন।
সাহায্য পাওয়া
উপরে তালিকাভুক্ত সরঞ্জাম এবং কৌশলগুলি ব্যবহার করে কোনও সমস্যা ডিবাগ করলে বিভিন্ন সমস্যার সমাধান হতে পারে, তবে এমন কিছু সমস্যা হতে পারে যার সমাধানের জন্য অতিরিক্ত সাহায্যের প্রয়োজন হতে পারে। প্রশ্ন জিজ্ঞাসা করতে এবং বাগ ফাইল করতে কোথায় তথ্যের জন্য আমাদের সহায়তা পৃষ্ঠাটি দেখুন।