আপনি একটি তালিকা থেকে ডেটা বৈধতার বিপরীতে জিজ্ঞাসা করছেন। কার্যত আপনি যদি চান যে ডাটা তালিকায় মানটি সফলতার পরিবর্তে ব্যর্থ হয়। ডেটা বৈধকরণের মাধ্যমে এটি সম্ভব নয়, তবে একটি স্ক্রিপ্ট এটি করতে পারে।
নিম্নলিখিত স্ক্রিপ্ট বিবেচনা করুন। এই স্ক্রিপ্টটি সমস্ত সম্পাদনা পর্যবেক্ষণ করে এবং যখন কোনও সেল মান একই কলামে অন্য কোনও ঘর মান নকল করে তখন একটি বার্তা বাক্স পপ করে।
function onEdit( event )
{
// Store the edited sheet.
var sheet_active = event .source .getActiveSheet() ;
// Store the edited range.
var range_active = event .source .getActiveRange() ;
// Store the row, column, and value of the edited cell.
var row_edited = range_active .getRow() ;
var column_edited = range_active .getColumn() ;
var value_edited = range_active .getValue() ;
// Store a range consisting of the column containing the edited cell.
var range_column_edited = sheet_active .getRange(
1 , column_edited ,
sheet_active .getMaxRows() , 1
) ;
// Store an array consisting of the values in the column.
var values_column_edited = range_column_edited .getValues() ;
// Compare each value to the edited cell.
for( var r = 0 ; r < values_column_edited .length ; r++ )
{
if( r+1 == row_edited ) continue ;
if( values_column_edited[r] == value_edited )
Browser .msgBox(
'value_edited="'
+ value_edited
+ '" values_column_edited['
+ r
+ ']="'
+ values_column_edited[r]
+ '"'
) ;
}
}
বিভিন্ন ব্যবহারিক সংশোধন প্রয়োজন হবে। উদাহরণস্বরূপ, আপনি কেবলমাত্র কয়েকটি নির্দিষ্ট কলামগুলি পর্যবেক্ষণ করতে পারেন এবং ঘরের মানটি ফাঁকা করে দেওয়ার মতো অতিরিক্ত পদক্ষেপ নিতে বেছে নিতে পারেন। ফাঁকা (অনুপস্থিত) মানগুলির জন্য আপনার বিশেষ হ্যান্ডলিংয়ের প্রয়োজন হতে পারে। তবে এটি আপনাকে প্রাথমিক কৌশল দেয় যা আপনাকে বৈধতা দেবে।
হালনাগাদ:
মূল উত্তরের বিস্তারিত জানার জন্য আমি ভেবেছিলাম যে আমি ব্যক্তিগতভাবে ব্যবহার করেছি এমন বৈধতাগুলির কয়েকটি যুক্ত করব যা উত্তরে বর্ণিত ছিল।
// এখানে আমি নিশ্চিত করেছিলাম যে একটি মাত্র ঘর সম্পাদিত হচ্ছে to
function isRangeSingleCell(range) {
if(range.getRow() === range.getLastRow() && range.getColumn() === range.getLastColumn()) { return true; }
}
এটি ব্যবহার করতে যদি একাধিক ঘর সম্পাদিত হয় তবে বৈধতাটি এড়িয়ে যান
if(!isRangeSingleCell(range_active)) { return; }
সারিটি যদি প্রথম সারিতে না হয় তবে আপনি বৈধতাও এড়িয়ে যেতে পারেন:
if(range_active.getRowIndex() != 1) { return; }
দ্রষ্টব্য: সারি গণনা যদি 0 বা 1 থেকে শুরু হয় তবে আমার কোডের শীর্ষটি মনে করতে পারছি না তাই এই কোডটিতে একটি ত্রুটি থাকতে পারে
অন এডিট বৈধকরণগুলির কীটি যত তাড়াতাড়ি সম্ভব অপ্রয়োজনীয় গণনা থেকে বাঁচানোর জন্য প্রস্থান করা। একটি ফাংশন থেকে দ্রুত প্রস্থান খালি রিটার্ন স্টেটমেন্ট।