গুগল অ্যাপস স্ক্রিপ্টে কনসোলে মুদ্রণ করছেন?


89

আমি প্রোগ্রামিংয়ে খুব নতুন (কোডেডেমির জেএস কোর্স নিয়েছি) to আমি কোনও পোকার গেমের ফলাফল সহ একটি স্প্রেডশিট দেওয়া থাকলে, কাকে দেওয়া উচিত, তা নির্ধারণ করার জন্য আমি একটি সাধারণ স্ক্রিপ্ট তৈরি করার চেষ্টা করছি। আমি গুগল অ্যাপস স্ক্রিপ্ট খুলেছি এবং শুরু করার জন্য নিম্নলিখিতগুলি লিখেছি:

function addplayerstoArray(numplayers) {

  var playerArray = [];

  for (i=0; i<numplayers; i++) {
    playerArray.push(i);
  }
}  

addplayerstoArray(7);

console.log(playerArray[3])

এটিতে মোট খেলোয়াড়ের সংখ্যা নিয়ে একটি অ্যারে তৈরি করা ধারণা। কোডটি চালানোর সময়, আমি ভেবেছিলাম এটি কনসোলে "3" মুদ্রণ করবে। কিন্তু কিছুই ঘটলো না. এটা বলেছে

"রেফারেন্স এরর:" কনসোল "সংজ্ঞায়িত করা হয় না।"

ক) গুগল অ্যাপস স্ক্রিপ্ট কনসোল মুদ্রণের ক্ষেত্রে কীভাবে কাজ করে সে সম্পর্কে আমি কী বুঝতে পারি না যাতে আমার কোডটি আমার পছন্দগুলি পূরণ করছে কিনা তা আমি দেখতে পারি?

খ) কোডটি নিয়ে কি সমস্যা?

উত্তর:


144

কনসোলটি উপলভ্য নয় কারণ কোডটি আপনার ব্রাউজারে নয়, ক্লাউডে চলছে। পরিবর্তে, জিএএস দ্বারা সরবরাহিত লগার শ্রেণিটি ব্যবহার করুন :

Logger.log(playerArray[3])

এবং তারপরে আইডিইতে ফলাফলগুলি> লগসের অধীনে ফলাফলগুলি দেখুন ...

জিএএস দিয়ে লগ ইন করার জন্য এখানে কিছু ডকুমেন্টেশন রয়েছে ।

সম্পাদনা করুন: 2017-07-20 অ্যাপ্লিকেশন স্ক্রিপ্ট এখন স্ট্যাকড্রাইভার লগিং সরবরাহ করে । স্ক্রিপ্ট সম্পাদক এ এই লগগুলি দেখুন - কনসোল লগের অধীনে দেখুন।


28
স্প্রেডশিটের জন্য ফাংশন লেখার সময় এটি কীভাবে হয়? লগিং আউটপুটটি কোথায় যায় আমি খুঁজে পাচ্ছি না।
টেকপ্লেক্সএন্জিনিয়ার

4
সুপার সহায়ক। ধন্যবাদ! এখন যদি কেবল লগই লাইভ-আপডেট হয় এবং দ্রুত পরীক্ষার জন্য উপায়ের বাইরে যায় location
কেভিনকোলম্যান

4
এইচটিএমএল টেমপ্লেটে কী হবে?
ট্রেভর

4
স্প্রেডশীটগুলিতে আপনি আউটপুটটি এমএসজিবক্সের সাথে বা সাইডবার সহ একটি সাইডবারে রাখতে পারেন। আপনি এটিকে শীতল স্থানের বাইরে যাওয়ার জায়গায় রাখতে পারেন।
নিন্দা

স্প্রেডশিটের জন্য এখানে লগিং বেটারলগ লাইব্রেরি
ইগোর সাবিনকিন

17

উপরোক্ত ভিন্ফের হ্যাকি সমাধানটি তৈরি করতে আমি এমএসবিবক্সকে এর মতো ব্যবহার করি:

Browser.msgBox('BorderoToMatriz', Browser.Buttons.OK_CANCEL);

এবং এটি ব্রেক পয়েন্টের মতো কিন্ডা কাজ করে, স্ক্রিপ্টটি থামায় এবং পপ-আপ বাক্সে আপনার যা যা স্ট্রিং দরকার তা আউটপুট করে। আমি বিশেষত শীটগুলিতে পাই, যেখানে লগার.লগ নিয়ে আমার সমস্যা হয়, এটি বেশিরভাগ সময় পর্যাপ্ত পরিশ্রম সরবরাহ করে।


12

Logger.log()প্রযুক্তিগতভাবে কনসোলে কিছু আউটপুট দেওয়ার সঠিক উপায় হলেও এর কয়েকটি বিরক্তি রয়েছে:

  1. আউটপুটটি একটি কাঠামোগত কাঠামোগত হতে পারে এবং দ্রুত হজম করা শক্ত হতে পারে।
  2. আপনাকে প্রথমে স্ক্রিপ্টটি চালাতে হবে, তারপরে ভিউ / লগগুলি ক্লিক করুন, যা দুটি অতিরিক্ত ক্লিক (আপনি যদি সিটিআরএল + কিবোর্ড শর্টকাটটি মনে করেন তবে)।
  3. আপনাকে সন্নিবেশ করতে হবে Logger.log(playerArray), এবং তারপরে ডিবাগিংয়ের পরে আপনি সম্ভবত মুছতে চান Logger.log(playerArray), অতএব অতিরিক্ত আরও 1-2 টি ধাপ।
  4. ওভারলেটি বন্ধ করতে আপনাকে ওকে ক্লিক করতে হবে (আরও একটি অতিরিক্ত ক্লিক)।

পরিবর্তে, যখনই আমি কোনও ডিবাগ করতে চাই তখন আমি ব্রেকপয়েন্টগুলি যুক্ত করি (লাইন নম্বরে ক্লিক করুন) এবং ডিবাগ বোতামটি (বাগ আইকন) টিপুন। ব্রেকপয়েন্টগুলি যখন আপনি কোনও ভেরিয়েবলকে কিছু নির্দিষ্ট করে দিচ্ছেন তখন ভাল কাজ করে তবে আপনি যখন কোনও ভেরিয়েবলের সূচনা করছেন এবং পরে কোনও সময়ে এর ভিতরে উঁকি দিতে চান তখন ঠিক তেমনটি হয় না, যা অপ্টটি করার চেষ্টা করছে তার অনুরূপ। এই ক্ষেত্রে আমি রান এক্স-টাইম ত্রুটি ছুঁড়ে ফেলতে "x" (x স্পট চিহ্নিত করে!) লিখে ব্রেক ব্রেকের শর্তটি চাপিয়ে দেব:

এখানে চিত্র বর্ণনা লিখুন

লগ দেখার সাথে তুলনা করুন:

এখানে চিত্র বর্ণনা লিখুন

ডিবাগ কনসোলে আরও তথ্য রয়েছে এবং লগস ওভারলে এর চেয়ে পড়তে অনেক সহজ। এই পদ্ধতির সাথে একটি সামান্য সুবিধা হ'ল পরিষ্কার কোডটি রাখা যদি আপনার জিনিস হয় তবে আপনাকে কখনও লগিং কমান্ডগুলির সাথে আপনার কোডকে দূষিত করার বিষয়ে চিন্তা করতে হবে না। এমনকি যদি আপনি "x" লিখেন তবে আপনাকে ডিবাগিং প্রক্রিয়ার অংশ হিসাবে এটি সরাতে বাধ্য করতে বাধ্য করা হবে অন্যথায় আপনার কোড চলবে না (বিল্ট-ইন ক্লিনআপ পরিমাপ, হ্যাঁ)।


4
যোগ xকরা যোগ করার মতো একই কার্যকারিতা হবেdebugger;
জেএসডিব্রটনটি

সম্পূর্ণ একমত. ডিবাগের তুলনায় লগার.লগ কার্যকর নয়।
স্টিভ গন

10

ওপি প্রশ্নের উত্তর দেওয়া

ক) গুগল অ্যাপস স্ক্রিপ্ট কনসোল মুদ্রণের ক্ষেত্রে কীভাবে কাজ করে সে সম্পর্কে আমি কী বুঝতে পারি না যাতে আমার কোডটি আমার পছন্দগুলি পূরণ করছে কিনা তা আমি দেখতে পারি?

গুগল অ্যাপস স্ক্রিপ্ট প্রকল্পের .gs ফাইলগুলির কোডটি ওয়েব ব্রাউজারের চেয়ে সার্ভারে চলে। পথ বার্তা লগইন করার জন্য ব্যবহার ছিল ক্লাস লগার

খ) কোডটি নিয়ে কি সমস্যা?

ত্রুটি বার্তায় যেমন বলা হয়েছিল, সমস্যাটি consoleছিল তা সংজ্ঞায়িত হয়নি তবে আজকাল একই কোডটি অন্য ত্রুটি ছুঁড়ে দেবে:

রেফারেন্সএরর: "প্লেয়ারআরে" সংজ্ঞায়িত হয়নি। (লাইন 12, ফাইল "কোড")

এটি কারণ প্লেয়ারআরে স্থানীয় ভেরিয়েবল হিসাবে সংজ্ঞায়িত করা হয়। ফাংশনটির বাইরে লাইন সরানো এটিকে সমাধান করবে solve

var playerArray = [];

function addplayerstoArray(numplayers) {
  for (i=0; i<numplayers; i++) {
    playerArray.push(i);
  }
}  

addplayerstoArray(7);

console.log(playerArray[3])

এখন কোডটি ত্রুটি ছুঁড়ে ছাড়াই কার্যকর করে, পরিবর্তে ব্রাউজার কনসোলটি দেখার জন্য আমাদের স্ট্যাকড্রাইভার লগিংয়ের দিকে নজর দেওয়া উচিত। গুগল অ্যাপস স্ক্রিপ্ট সম্পাদক ইউআই থেকে ভিউ> স্ট্যাকড্রাইভার লগিং এ ক্লিক করুন ।

সংযোজন

2017 এ গুগল সমস্ত স্ক্রিপ্টগুলিতে স্ট্যাকড্রাইভার লগিং প্রকাশ করেছে এবং ক্লাস কনসোল যুক্ত করেছে, সুতরাং এর মতো কিছু অন্তর্ভুক্ত করার ফলে console.log('Hello world!')কোনও ত্রুটি ঘটবে না তবে লগটি ব্রাউজার কনসোলের পরিবর্তে গুগল ক্লাউড প্ল্যাটফর্ম স্ট্যাকড্রাইভার লগিং সার্ভিসে থাকবে।

থেকে Google Apps স্ক্রিপ্ট রিলিজ নোট 2017

23 জুন, 2017

স্ট্যাকড্রাইভার লগিংটিকে প্রাথমিক অ্যাক্সেসের বাইরে সরানো হয়েছে। সমস্ত স্ক্রিপ্ট এখন স্ট্যাকড্রাইভার লগিং অ্যাক্সেস আছে।

লগিং থেকে > স্ট্যাকড্রাইভার লগিং

নিম্নলিখিত উদাহরণটি স্ট্যাকড্রাইভারে তথ্য লগ করতে কনসোল পরিষেবাটি কীভাবে ব্যবহার করবেন তা দেখায় ।

function measuringExecutionTime() {
  // A simple INFO log message, using sprintf() formatting.
  console.info('Timing the %s function (%d arguments)', 'myFunction', 1);

  // Log a JSON object at a DEBUG level. The log is labeled
  // with the message string in the log viewer, and the JSON content
  // is displayed in the expanded log structure under "structPayload".
  var parameters = {
      isValid: true,
      content: 'some string',
      timestamp: new Date()
  };
  console.log({message: 'Function Input', initialData: parameters});

  var label = 'myFunction() time';  // Labels the timing log entry.
  console.time(label);              // Starts the timer.
  try {
    myFunction(parameters);         // Function to time.
  } catch (e) {
    // Logs an ERROR message.
    console.error('myFunction() yielded an error: ' + e);
  }
  console.timeEnd(label);      // Stops the timer, logs execution duration.
}

6

একটি গুগল স্ক্রিপ্ট প্রকল্পে আপনি এইচটিএমএল ফাইল তৈরি করতে পারেন (উদাহরণ: index.html) বা জিএস ফাইল (উদাহরণ: কোড.gs)। .Gs ফাইলগুলি সার্ভারে কার্যকর করা হয় এবং আপনি @ পিটার হারম্যানের বর্ণনা অনুসারে লগার.লগ ব্যবহার করতে পারেন। তবে যদি ফাংশনটি একটি .html ফাইলে তৈরি করা হয় তবে এটি ব্যবহারকারীর ব্রাউজারে কার্যকর করা হচ্ছে এবং আপনি কনসোল.লগ ব্যবহার করতে পারেন। Chrome ব্রাউজার কনসোল যাবে দেখা উইন্ডোজ / লিনাক্স বা Cmd ছেড়ে জে ম্যাক উপর Ctrl-Shift J দ্বারা

আপনি যদি এইচটিএমএল ফাইলটিতে লগার.লগ ব্যবহার করতে চান তবে আপনি এইচটিএমএল ফাইল থেকে লগার.লগ ফাংশনটি কল করতে একটি স্ক্রিপ্টলেট ব্যবহার করতে পারেন । এটি করতে আপনি < প্রবেশ করান ? লগার.লগ (কিছু)?> আপনি যা কিছু লগ করতে চান তার সাথে কিছু প্রতিস্থাপন করা হচ্ছে। স্ট্যান্ডার্ড স্ক্রিপ্টলেটগুলি, কোনটি সিনট্যাক্স ব্যবহার করে <? ...?>, পৃষ্ঠায় স্পষ্টভাবে আউটপুট না করে কোড চালাও।


2

2020 এর জন্য আপডেট হয়েছে

২০২০ সালের ফেব্রুয়ারিতে গুগল বিল্ট-ইন গুগল অ্যাপস স্ক্রিপ্ট আইডিইতে একটি বড় আপগ্রেড ঘোষণা করেছিল এবং এটি এখন কনসোল.লগ () সমর্থন করে । সুতরাং, আপনি এখন উভয় ব্যবহার করতে পারেন:

  1. লগার.লগ ()
  2. কনসোল.লগ ()

শুভ কোডিং!


console.logউল্লিখিত আপগ্রেডের আগে সমর্থিত হয়েছিল ( আমার উত্তর দেখুন )
রুবুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.