গুগল অ্যাপস স্ক্রিপ্টটি কীভাবে ডিবাগ করা যায় (ওরফে লগার.লগ কোথায় লগ হয়?)


129

গুগল শিটগুলিতে আপনি কিছু স্ক্রিপ্টিং কার্যকারিতা যুক্ত করতে পারেন। আমি onEditইভেন্টটির জন্য কিছু যুক্ত করছি , তবে এটি কাজ করছে কিনা তা বলতে পারছি না। আমি যতদূর বলতে পারি, আপনি গুগল শীট থেকে কোনও লাইভ ইভেন্ট ডিবাগ করতে পারবেন না, তাই আপনাকে এটি ডিবাগার থেকে করতে হবে, এটি অর্থহীন, যেহেতু আমার ফাংশনটিতে ইভেন্টের তর্কটি পাস করার পরে আমি onEdit()যদি এটি চালনা করি তবে সর্বদা সংজ্ঞায়িত হবে Script Editor

সুতরাং, Logger.logযখনই onEditফাংশনটি ডাকা হবে তখন আমি কিছু ডেটা লগ করার জন্য পদ্ধতিটি ব্যবহার করার চেষ্টা করছিলাম , তবে এটিও মনে হয় এটি কেবলমাত্র যখন কাজ করে তখনই কাজ করে Script Editor। আমি যখন এটি চালনা করি Script Editor, তখন গিয়ে লগগুলি দেখতে পারিView->Logs...

আমি আশা করছিলাম যে ইভেন্টটি বাস্তবায়িত হওয়ার পরে আমি লগগুলি দেখতে সক্ষম হব, তবে আমি এটি বের করতে পারি না।

আমি কীভাবে এই জিনিসগুলি ডিবাগ করব?


3
এখানে একই সমস্যা - গৃহীত উত্তরগুলি এর উত্তর দেয় না তবে প্রচুর সাধারণ ভুল তথ্য দেয়।
হিপ্পিজিম

দেখে মনে হচ্ছে তারা এখন এটি স্থির করেছে। যতক্ষণ আপনি আপনার স্প্রেডশিট থেকে স্ক্রিপ্ট সম্পাদক খোলেন, আপনি যখন আপনার পত্রকের স্টাফটি চালাবেন তখন সেই ট্যাবটি খোলা রাখুন। তারপরে স্ক্রিপ্ট ট্যাবে ফিরে যান এবং এতে লগিংয়ের তথ্য থাকবে।
ফ্রেইহেহেড

2
tldr; অনুলিপি, আটকান এবং চালানLogger.log('firstLog');MailApp.sendEmail({to:'yourEmailAddressHere@someone.com',subject: "subject here ^_^",body: Logger.getLog()});
কোটি এমব্রি

ম্যাবি আপনার গ্রহণযোগ্য উত্তর পরিবর্তন করতে হবে বা স্ট্যাকড্রাইভার লগিং উপলব্ধ রয়েছে এমন একটি নোট যুক্ত করুন।
বোটেনউউভার

উত্তর:


83

হালনাগাদ:

এই উত্তরে লিখিত হিসাবে ,


Logger.logহয় আপনার স্ক্রিপ্টগুলিতে ঘটে যাওয়া ত্রুটিগুলির একটি ইমেল (শেষ পর্যন্ত) প্রেরণ করবে বা আপনি যদি জিনিসগুলি চালাচ্ছেন তবে আপনি Script Editorশেষ রান ফাংশন থেকে লগটি দেখতে পাচ্ছেন View->Logs(এখনও স্ক্রিপ্ট সম্পাদক হিসাবে)। আবার, এটি আপনাকে কেবল এমন কিছু দেখাতে দেবে যা আপনি ভিতর থেকেScript Editor দৌড়ে যাওয়া শেষ ফাংশন থেকে লগইন করেছিলেন ।

আমি যে স্ক্রিপ্টটিতে কাজ করার চেষ্টা করছিলাম তার স্প্রেডশিটগুলির সাথে করণীয় ছিল - আমি একটি স্প্রেডশিট টু-চেকলিস্ট টাইপ জিনিস তৈরি করেছিলাম যা আইটেমগুলিকে অগ্রাধিকার অনুসারে বাছাই করে।

সেই স্ক্রিপ্টের জন্য আমি যে ট্রিগারগুলি ইনস্টল করেছি তা হ'ল অন ওপেন এবং অন-এডিট ট্রিগার। অন ​​এডিট ট্রিগারটি ডিবাগ করা সবচেয়ে কঠিন ছিল, কারণ আমি ভাবতে থাকি যে আমি যদি আমার অনেডিট ফাংশনটিতে একটি ব্রেকপয়েন্ট স্থাপন করি, স্প্রেডশিট খুলি, একটি কক্ষ সম্পাদিত করি যে আমার ব্রেকপয়েন্টটি ট্রিগার হবে। এই ক্ষেত্রে না হয়.

একটি সেল সম্পাদিত থাকার ভান করার জন্য, আমি না প্রকৃত স্প্রেডশীট যদিও কোনো কিছু দেবার থাকার শেষ। আমি যা করেছি তা নিশ্চিত করেছিলাম যে আমি যে ঘরটি "সম্পাদিত" হিসাবে বেছে নিতে চেয়েছি তা নির্বাচিত হয়েছে, তারপরে Script Editor, আমি যাব Run->onEdit। তাহলে আমার ব্রেকপয়েন্টে আঘাত হানে।

যাইহোক, আমাকে ইভেন্টটি যুক্তিটি ব্যবহার করা বন্ধ করে দিতে হবে যা অনেডিট ফাংশনে চলে যায় - আপনি এটি করে অনুকরণ করতে পারবেন না Run->onEdit। স্প্রেডশিট থেকে আমার প্রয়োজনীয় কোনও তথ্য যেমন কোনও ঘর নির্বাচন করা হয়েছিল ইত্যাদি, আমাকে নিজেই বের করতে হয়েছিল।

যাইহোক, দীর্ঘ উত্তর, কিন্তু আমি শেষ পর্যন্ত এটি সন্ধান।


সম্পাদনা :

আমার তৈরি টোডো চেকলিস্টটি যদি আপনি দেখতে চান তবে আপনি এটি এখানে পরীক্ষা করে দেখতে পারেন

(হ্যাঁ, আমি জানি যে কেউ এটি সম্পাদনা করতে পারে - এটি এটিকে ভাগ করে নেওয়ার মূল বিষয়!)

আমি আশা করছিলাম এটি আপনাকেও স্ক্রিপ্টটি দেখতে দিন। আপনি যেহেতু এটি দেখতে পাচ্ছেন না, তাই এটি এখানে:

function onOpen() {
  setCheckboxes();
};

function setCheckboxes() {
  var checklist = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("checklist");
  var checklist_data_range = checklist.getDataRange();
  var checklist_num_rows = checklist_data_range.getNumRows();
  Logger.log("checklist num rows: " + checklist_num_rows);

  var coredata = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("core_data");
  var coredata_data_range = coredata.getDataRange();

  for(var i = 0 ; i < checklist_num_rows-1; i++) {
    var split = checklist_data_range.getCell(i+2, 3).getValue().split(" || ");
    var item_id = split[split.length - 1];
    if(item_id != "") {
      item_id = parseInt(item_id);
      Logger.log("setting value at ("+(i+2)+",2) to " + coredata_data_range.getCell(item_id+1, 3).getValue());
      checklist_data_range.getCell(i+2,2).setValue(coredata_data_range.getCell(item_id+1, 3).getValue());
    }
  }
}

function onEdit() {
  Logger.log("TESTING TESTING ON EDIT");
  var active_sheet = SpreadsheetApp.getActiveSheet();
  if(active_sheet.getName() == "checklist") {
    var active_range = SpreadsheetApp.getActiveSheet().getActiveRange();
    Logger.log("active_range: " + active_range);
    Logger.log("active range col: " + active_range.getColumn() + "active range row: " + active_range.getRow());
    Logger.log("active_range.value: " + active_range.getCell(1, 1).getValue());
    Logger.log("active_range. colidx: " + active_range.getColumnIndex());
    if(active_range.getCell(1,1).getValue() == "?" || active_range.getCell(1,1).getValue() == "?") {
      Logger.log("made it!");
      var next_cell = active_sheet.getRange(active_range.getRow(), active_range.getColumn()+1, 1, 1).getCell(1,1);
      var val = next_cell.getValue();
      Logger.log("val: " + val);
      var splits = val.split(" || ");
      var item_id = splits[splits.length-1];
      Logger.log("item_id: " + item_id);

      var core_data = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("core_data");
      var sheet_data_range = core_data.getDataRange();
      var num_rows = sheet_data_range.getNumRows();
      var sheet_values = sheet_data_range.getValues();
      Logger.log("num_rows: " + num_rows);

      for(var i = 0; i < num_rows; i++) {
        Logger.log("sheet_values[" + (i) + "][" + (8) + "] = " + sheet_values[i][8]);
        if(sheet_values[i][8] == item_id) {
          Logger.log("found it! tyring to set it...");
          sheet_data_range.getCell(i+1, 2+1).setValue(active_range.getCell(1,1).getValue());
        }
      }

    }
  }

  setCheckboxes();
};

পিএফএফ, লগিং কেবল মেল এ দৃশ্যমান হবে? কিন্ডা এই সমস্ত ডিবাগিং এবং লগিং বৈশিষ্ট্যগুলিকে অকেজো করে তোলে, কারণ কার্যকরভাবে আমরা স্প্রেডশিট থেকে আসল ডেটা ব্যবহার করতে পারি না।
মিঃফক্স

না। যেমন লেখক বলেছেন,
লগতে

9
@rainabba হ্যাঁ, লগিং স্ক্রিপ্ট সম্পাদক এ উপলব্ধ। যাইহোক, যখন কোনও স্ক্রিপ্ট ইভেন্ট আর্গুমেন্টের উপর নির্ভর করে এবং ইভেন্ট আর্গুমেন্টটি স্ক্রিপ্ট সম্পাদকটিতে উপলব্ধ না থাকে, এর কার্যকরভাবে বোঝানো হয় যে এই ধরণের স্ক্রিপ্টগুলির বিকাশকারীদের লগগুলিতে অ্যাক্সেসের কোনও রিয়েল-টাইম উপায় নেই।
জেফ

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

1
এই উত্তরটি পুরানো এবং স্বীকৃত উত্তর হিসাবে দেখা উচিত নয়। স্ট্যাকড্রাইভার লগিং উপলভ্য এবং মনোযোগের মতো কাজ করে। এলোমেলো অংশগুলির উত্তর একবার দেখুন!
বোটেনউউভার

34

আমি যতদূর বলতে পারি, আপনি গুগল ডক্স থেকে কোনও লাইভ ইভেন্ট ডিবাগ করতে পারবেন না, কাজেই আপনাকে এটি ডিবাগার থেকে করতে হবে, যা আমার অনয়েড () ফাংশনটিতে ইভেন্ট আর্গুমেন্টটি পাস করার পরে অর্থহীন, কারণ আমি চালিত হলে সর্বদা অপরিজ্ঞাত থাকবে এটি স্ক্রিপ্ট সম্পাদক থেকে।

সত্য - সুতরাং ডিবাগিংয়ের জন্য ইভেন্টের যুক্তিটি নিজেকে সংজ্ঞায়িত করুন। দেখুন আমি কীভাবে জিএএসে ট্রিগার ফাংশন পরীক্ষা করতে পারি?

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

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

আপনি যদি কোনও স্প্রেডশিটযুক্ত স্ক্রিপ্টে কোডিং করছেন, উদাহরণস্বরূপ, আপনি আপনার স্ক্রিপ্ট ফাইলের শীর্ষে এই এক লাইনটি যুক্ত করতে পারেন এবং সমস্ত লগগুলি স্প্রেডশিটে একটি "লগস" শীটে যাবে। অন্য কোনও কোডের প্রয়োজন নেই, Logger.log()আপনি যেমনটি করেন ঠিক তেমন ব্যবহার করুন :

Logger = BetterLog.useSpreadsheet();

1
সেকেলে. console.log()এখনই সেরা উত্তর হওয়া উচিত
TheMaster

22

2017 আপডেট: স্ট্যাকড্রাইভার লগিং এখন গুগল অ্যাপস স্ক্রিপ্টের জন্য উপলব্ধ। স্ক্রিপ্ট সম্পাদকের মেনু বার থেকে, View > Stackdriver Loggingলোগো দেখতে বা প্রবাহিত করতে গোটো:।

কনসোল.লগ ()DEBUG স্তরের বার্তা লিখবে

উদাহরণস্বরূপ onEdit()লগিং:

function onEdit (e) {
  var debug_e = {
    authMode:  e.authMode,  
    range:  e.range.getA1Notation(),    
    source:  e.source.getId(),
    user:  e.user,   
    value:  e.value,
    oldValue: e. oldValue
  }

  console.log({message: 'onEdit() Event Object', eventObject: debug_e});
}

তারপর লগ পরীক্ষা Stackdriver UI 'তে লেবেল onEdit() Event Objectআউটপুট দেখতে


মূল প্রশ্নটি বিশেষভাবে সম্পর্কে জিজ্ঞাসা করে Logger.log। আপনি console.logযেটি ব্যবহার করেন সে থেকে এটি কীভাবে আলাদা ? আমি সরঞ্জামগুলিতে খুব নতুন তাই ঠিক কী কী তা বোঝার চেষ্টা করছি।
আনানফায়

5

কিছুটা হ্যাকি, তবে আমি "কনসোল" নামে একটি অ্যারে তৈরি করেছিলাম এবং যে কোনও সময় কনসোল আউটপুট দিতে চেয়েছিলাম আমি অ্যারেতে ঠেলা দিয়েছিলাম। তারপরে আমি যখনই আসল আউটপুটটি দেখতে চাইতাম, আমি consoleআগে যা কিছু ফিরিয়েছিলাম তার পরিবর্তে ফিরে আসি ।

    //return 'console' //uncomment to output console
    return "actual output";
}

জেএস console.log('smth')পুরোপুরি কাজ করে, তবে জিএএস-এ কেমন?
ইগোর সাবিনকিন

1
কনসোল.লগ কেবলমাত্র কাজ করবে না কারণ জিএএস আপনার ওয়েব স্প্রেডশিটের মতো একই ওয়েব পৃষ্ঠায় স্ক্রিপ্টগুলি চালাচ্ছে না, সেগুলি স্ক্রিপ্টগুলি গুগলের অ্যাপ ইঞ্জিন দ্বারা পরিচালিত হয় যাতে আপনি তাদের অতিরোজন লগার.লগ ডিবাগার অনুসরণ করতে পারেন বা আমার মতো হ্যাক ব্যবহার করতে পারেন
woojoo666

আপনার অ্যারে 'কনসোল' কেমন? যখন I just returned consoleতুমি এটা কিভাবে আউটপুট না?
ইগোর সাবিনকিন

2
দুঃখিত আমি খুব ভাল ব্যাখ্যা করিনি, তবে মূলত স্প্রেডশিট ফাংশনগুলি সেলে মানটি ফেরত দেয়, সুতরাং আপনি যদি আপনার "কনসোল" ফিরিয়ে দেন তবে আপনি আপনার স্প্রেডশিট সেলটিতে লগ ইন করা সমস্ত কিছুই দেখতে পাবেন
woojoo666

5

আপনার যদি স্ক্রিপ্ট সম্পাদক খোলা থাকে আপনি ভিউ- লগসের অধীনে লগগুলি দেখতে পাবেন। আপনার স্ক্রিপ্টে যদি একটি অনডেট ট্রিগার থাকে তবে স্প্রেডশিটে পরিবর্তন করুন যা স্ক্রিপ্ট সম্পাদকটির সাথে দ্বিতীয় ট্যাবে খোলার সাথে ফাংশনটি ট্রিগার করা উচিত। তারপরে স্ক্রিপ্ট সম্পাদক ট্যাবে যান এবং লগটি খুলুন। আপনার ফাংশনটি লগারে যা যা তা আপনি দেখতে পাবেন।

মূলত স্ক্রিপ্ট সম্পাদক যতক্ষণ না খোলা থাকে ততক্ষণ ইভেন্টটি লগতে লিখবে এবং এটি আপনার জন্য প্রদর্শন করবে। অন্য কেউ এই ফাইলটিতে অন্য কেউ রয়েছে কিনা তা এটি প্রদর্শিত হবে না।


5

আমি এই পোস্টগুলির মধ্য দিয়ে চলেছি এবং কোনওরকম একটি সহজ উত্তর খুঁজে পেলাম, যা আমি এখানে সংক্ষিপ্ত এবং মিষ্টি সমাধানগুলি চাই তাদের জন্য পোস্ট করছি:

  1. console.log("Hello World")আপনার স্ক্রিপ্ট ব্যবহার করুন ।
  2. Https://script.google.com/home/my এ যান এবং আপনার অ্যাড-অন নির্বাচন করুন।
  3. প্রকল্পের বিবরণে এলিসিস মেনুতে ক্লিক করুন, কার্যকর করুন নির্বাচন করুন।

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

  1. সর্বশেষ প্রয়োগের শিরোনামে ক্লিক করুন এবং লগ পড়ুন।

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


এটিই এপ্রিল 2019 এর পরে তৈরি গুগল অ্যাপস স্ক্রিপ্টগুলির জন্য প্রাথমিক "স্ট্যাকড্রাইভার লগিং" (যা অ্যাপ্লিকেশন স্ক্রিপ্টগুলির পিছনে "স্বয়ংক্রিয়" প্রকল্পগুলির জন্য গুগল ক্লাউড প্রকল্প অ্যাক্সেস করা অসম্ভব হয়ে পড়ে)) আপনি যদি কোনও অ্যাপ্লিকেশন স্ক্রিপ্ট প্রকল্পের জন্য জিসিপি পরিবর্তন করেন তবে নিয়মিত স্ট্যাকড্রাইভার লগিং উত্তরগুলি প্রয়োগ হয়।
তেহোচ

1
আমি কেবল এখানে সরাসরি মৃত্যুদণ্ড দেখি (যেমন আমি স্ক্রিপ্ট সম্পাদকের জন্য "রান" ক্লিক করেছি), কিন্তু আমি শীটটিতে ডেটা পরিবর্তনের ফলে মৃত্যুদণ্ড দেখতে পাচ্ছি না। আমি কীভাবে তাদের ডিবাগ করব?
ক্রিস 70

আমি চেষ্টা করে দেখিনি দুঃখিত। আমি কল্পনা করব যে শীটে পরিবর্তনটি যদি কোনও ফাংশনকে ট্রিগার করে এবং ফাংশনে একটি লগ থাকে, লগটি পাশাপাশি প্রদর্শিত হবে। পরিবর্তনগুলি কি সর্বদা ব্যবহারকারীর দ্বারা প্ররোচিত হয়?
বেঞ্জামিন

1
হ্যাঁ, আমি এটিও কল্পনা করতে পারি। দুর্ভাগ্যক্রমে এটি হয় না :-( ডেটাতে পরিবর্তনগুলি আমার ফাংশনকে ট্রিগার করে তবে কনসোল.লগ () বার্তা স্ট্যাকড্রাইভার লগে প্রদর্শিত হয় না I আমি একটি অন-চেঞ্জ অ্যাক্টিভেটর যুক্ত করার চেষ্টা করেছি, তবে এটি পরামিতি ছাড়াই আমার ফাংশনটির জন্য অনুরোধ করে: - (
ক্রিস 70

4

আমার একই সমস্যা হচ্ছে, আমি নীচে কোথাও ওয়েবে পেয়েছি ...

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


হুম, হ্যাঁ, আমি এটির মধ্যে দিয়েছি - পরের দিন সকালে এটি আমার স্ক্রিপ্টগুলি থেকে সম্পূর্ণ ত্রুটি ইমেল করেছিল। যদিও আমি এটি খুঁজে বের করতে পেরেছি (এখন আমার নিজের উত্তর পোস্ট করছি)
d0c_s4vage

1

এটি মার্জিত থেকে অনেক দূরে, তবে ডিবাগ করার সময় আমি প্রায়শই লগারে লগইন করি এবং তার বিষয়বস্তু আনতে getLog () ব্যবহার করি । তারপরে, আমি হয়:

  • পরিবর্তনগুলিতে ফলাফলগুলি সংরক্ষণ করুন (যা গুগল স্ক্রিপ্টস ডিবাগারে পরীক্ষা করা যায় — এটি এমন কয়েকটি ক্ষেত্রে কাজ করে যেখানে আমি কিছু কোডে ব্রেকপয়েন্ট স্থাপন করতে পারি না, তবে আমি কোডে একটি সেট করতে পারি যা পরে কার্যকর করা হয়)
  • কিছু অস্থায়ী DOM উপাদান এটি লিখুন
  • এটি একটি সতর্কতার সাথে প্রদর্শন করুন

মূলত, এটি কেবল একটি জাভাস্ক্রিপ্ট আউটপুট ইস্যুতে পরিণত হয়।

এটি আধুনিক console.log()বাস্তবায়নের কার্যকারিতা ঘোরতরভাবে অভাবযুক্ত , কিন্তু লগার এখনও গুগল স্ক্রিপ্টগুলি ডিবাগ করতে সহায়তা করে।


1

ঠিক যেমন একটি নোটিশ। আমি আমার স্প্রেডশিটের জন্য একটি পরীক্ষা ফাংশন করেছি। আমি ওডিট (ই) ফাংশনে ভেরিয়েবল গুগল থ্রো ব্যবহার করি (আমি এটিকে ই বলেছিলাম)। তারপরে আমি এইভাবে একটি পরীক্ষার ফাংশন করেছি:

function test(){
var testRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(GetItemInfoSheetName).getRange(2,7)
var testObject = {
    range:testRange,
    value:"someValue"
}
onEdit(testObject)
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(GetItemInfoSheetName).getRange(2,6).setValue(Logger.getLog())
}

এই পরীক্ষার ফাংশনটিতে কল করা স্প্রেডশিটে আপনার ইভেন্ট হওয়ার সাথে সাথে সমস্ত কোড রান করে। আমি সবেচানো সম্পাদিত ঘরের সম্ভাবনাটি সরিয়ে দিয়েছি আমাকে একটি অপ্রত্যাশিত ফলাফল দিয়েছে, আমি মানটিকে ঘরের মধ্যে রেখেছি বলে মান নির্ধারণ করে। OBS! আরও ভেরিয়েবলের জন্য গুগলগুলি ফাংশনটি দেয় এখানে যান: https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events


0

বর্তমানে আপনি ডক্সের মধ্যে স্ক্রিপ্টগুলি ব্যবহারের ধারক বাউন্ড প্রকৃতির মধ্যে সীমাবদ্ধ। আপনি যদি ডক্সের বাইরে একটি নতুন স্ক্রিপ্ট তৈরি করেন তবে আপনি কোনও গুগল স্প্রেডশিটে তথ্য রফতানি করতে পারবেন এবং লগিং সরঞ্জামের মতো ব্যবহার করতে পারবেন।

উদাহরণস্বরূপ আপনার প্রথম কোড ব্লকে

function setCheckboxes() {

    // Add your spreadsheet data
    var errorSheet = SpreadsheetApp.openById('EnterSpreadSheetIDHere').getSheetByName('EnterSheetNameHere');
    var cell = errorSheet.getRange('A1').offset(errorSheet.getLastRow(),0);

    // existing code
    var checklist = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("checklist");
    var checklist_data_range = checklist.getDataRange();
    var checklist_num_rows = checklist_data_range.getNumRows();

    // existing logger
    Logger.log("checklist num rows: " + checklist_num_rows);

   //We can pass the information to the sheet using cell.setValue()
    cell.setValue(new Date() + "Checklist num rows: " + checklist_num_rows);

আমি যখন জিএএস-এর সাথে কাজ করছি তখন আমার দুটি মনিটর রয়েছে (আপনি দুটি উইন্ডো ব্যবহার করতে পারেন) একটি জিএএস পরিবেশ এবং অন্যটিতে এসএস সমন্বিত একটি সেটআপ রয়েছে যাতে আমি তথ্য লিখতে এবং লগ করতে পারি।


0

ডেভ কনসোল অ্যাপ্লিকেশন স্ক্রিপ্ট দ্বারা নিক্ষেপ করা ত্রুটিগুলি লগ করবে, যাতে আপনি এটি একটি সাধারণ কনসোল.লগ হিসাবে লগ করার জন্য কেবল একটি ত্রুটি ছুঁড়ে ফেলতে পারেন। এটি কার্যকর করা বন্ধ করবে, তবে এটি ধাপে ধাপে ডিবাগিংয়ের জন্য কার্যকর হতে পারে।

throw Error('hello world!');

একইভাবে কনসোলে প্রদর্শিত হবে console.log('hello world')


0

কেবল আপনার স্প্রেডশিট কোডটি ডিবাগ করুন:

...
throw whatAmI;
...

এর মতো শো:

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


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