গুগল স্প্রেডশিটে কলামটি স্বয়ংক্রিয়ভাবে আপডেট করা শেষ বারের পরিবর্তনের তারিখ দেখাচ্ছে


37

শেষ আপডেটের টাইমস্ট্যাম্প দেখানোর জন্য কলাম দুটি স্বতঃ আপডেট করার উপায় বের করার চেষ্টা করা হচ্ছে। আমি বুঝতে পারি ডকটি সর্বশেষ পরিবর্তনের একটি টাইমস্ট্যাম্প দেখায়, তবে একই সাথে আমাদের কাছে প্রচুর ক্লায়েন্ট অ্যাক্সেস এবং সামঞ্জস্য করছে। সুতরাং এই অনুরোধটি রাখা হয়েছিল I'll আমি স্বীকার করব যে আমি কোডিং করি নি, তাই এটি আমার বাইরে।

মায়ান্দা এমন কিছু পোস্ট করেছিলেন যা সঠিক পথ ধরে মনে হয়েছিল, তবে আমাদের প্রয়োজনীয়তার জন্য কীভাবে এটি প্রয়োগ করা যায় তা আমরা নিশ্চিত নই:

গুগল স্প্রেডশিট টাইমস্ট্যাম্প?


আপনি যদি আমাদের দস্তাবেজের সাথে লিঙ্ক করতে পারেন বা আপনি যা সন্ধান করছেন তার উদাহরণ নথি সরবরাহ করতে পারলে এটি সহায়তা করবে। আমি সেই অনুসারে আমার অন্যান্য উত্তরটি সংশোধন করতে পারি তবে আপনি কী জিজ্ঞাসা করছেন তা আমি নিশ্চিত নই। আপনার কি কেবল টাইমস্ট্যাম্পের সাথে আপডেট হওয়া একটি একক কক্ষের প্রয়োজন যা পুরো স্প্রেডশিটটি আপডেট করা হয়েছিল তা দেখায়?
OnenOnlyWalter

ওহে ওনেন আমরা যা খুঁজছি তা হ'ল, কলাম 2 এ, প্রতিটি সারিটি টাইমস্ট্যাম্পের সাথে যে কোনও সময় নিজ নিজ সারির যে কোনও ঘর আপডেট করা হয় updates দুর্ভাগ্যক্রমে এটি গোপনীয় হওয়ায় আমি ডকটি পোস্ট করতে পারি না। তবে এতে 21 টি কলাম এবং 60 টি সারি রয়েছে। এটা কি সাহায্য করে?
রিচগনজালেজ

বুঝতে পেরেছি, আমাকে আমার আসল কোডটি একবার দেখে নিই এবং আপনার কাছে ফিরে আসি :)
অনেনইনওয়াল্টার

ওনেনের অনেক প্রশংসা!
রিচগনজালেজ

উত্তর:


36

ঠিক আছে, এখানে আমার আগের উত্তরে কোডের একটি সংশোধিত সংস্করণ রয়েছে:

function onEdit(e) {
  // Your sheet params
  var sheetName = "MySheet";
  var dateModifiedColumnIndex = 2;
  var dateModifiedColumnLetter = 'B';

  var range = e.range; // range just edited
  var sheet = range.getSheet();
  if (sheet.getName() !== sheetName) {
    return;
  }

  // If the column isn't our modified date column
  if (range.getColumn() != dateModifiedColumnIndex) { 
    var row = range.getRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy, hh:mm:ss");
    var dateModifiedRange = sheet.getRange(dateModifiedColumnLetter + row.toString());
    dateModifiedRange.setValue(time);
  };
 };

এটি যা করে তা হ'ল যে কোনও কক্ষের সারিটি পরিবর্তিত হয় এবং সেই নির্দিষ্ট সারির দ্বিতীয় কলামে একটি টাইমস্ট্যাম্প বরাদ্দ করে।

বাস্তবায়ন করার জন্য, সব করতে প্রয়োজন স্প্রেডশীটে যান এবং 'ক্লিক করুন Tools> Script Editor। ফলস্বরূপ সম্পাদক পৃষ্ঠাতে, কেবল এটি সেখানে আটকান। যেহেতু এটি একটি onEdit()ফাংশন তাই এটি আপনার স্প্রেডশিটের কোষগুলিতে অন্য কিছু যুক্ত না করেই কাজ করা উচিত, কেবল এডিটরে এটি আটকে দিন এবং সংরক্ষণ করুন।

টাইমস্ট্যাম্পের জন্য, আমি এমএম / ডিডি / ওয়াই ফর্ম্যাটটি সেট করে দিয়েছি। আপনি যদি এটি পরিবর্তন করতে চান তবে আপনি কেবল ব্যবহারের পরিবর্তন করতে পারেন Utilities.formatDate


ওন, এটি পুরোপুরি কাজ করে! তোমাকে অনেক ধন্যবাদ!
রিচগনজালেজ

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

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

1
টাইমস্ট্যাম্প আমার পক্ষে কাজ করে না। আমার সাথে "20yy-MM-dd HH: মিমি" এর পরিবর্তে কাজ করে। আমি মনে করি 'ডিডি; ছোট হাত হতে হবে বা এটি কাজ করে না (জানুয়ারী না হলে যা এটি লেখা হয়েছিল, আহহাহহ) unless
রিকার্ডো

1
নোট করুন যে এর জন্য "ডিডি" ব্যবহার .formatDate()করলে আপনি "বছরের দিন" পাবেন - যেমন ৩১ ডিসেম্বরের জন্য ৩5৫. আপনি সম্ভবত "ডিডি" চান। আপনি এখানে তারিখের ফর্ম্যাট মানগুলির একটি সম্পূর্ণ তালিকা দেখতে পাবেন: ডকস.ওরকল
ড্যান

8

এফওয়াইআই, স্বীকৃত উত্তরটি DDদিনের ফর্ম্যাট হিসাবে ব্যবহার করে, যা আপনাকে "312" এর মতো, অর্থাত্ বছরের 312 তম দিনের মতো পাবেন।

আমি এটি ব্যবহার করেছি:

"yyyy-MM-dd, hh:mm:ss"

এটি পেতে:

2013-11-12, 03:43:20

1
কেন গৃহীত উত্তর সংশোধন করবেন না?
আলেক্সকোভেলস্কি


4

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


function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); // Get spreadsheet name 
    var r = s.getActiveCell(); // store active cell name in current spreadsheet 
  var cell1 = 9 // This is the row I want to put values
  if(r.getRow() != cell1) { // Ignores this row (where I put the dates)
    var column = r.getColumn();  // Get column # from active cell
    var time = new Date(); // Get date and time of last mod
    time = Utilities.formatDate(time, "GMT-08:00", "MM/DD/yy, hh:mm:ss"); // Format date and time
    SpreadsheetApp.getActiveSheet().getRange(cell1,column).setValue(time); // put in time in cell
  };
 };

এটি আমার জন্য বেশ ভাল কাজ করেছে বলে মনে হয়েছিল। @ ওনেনলিওয়াল্টারের সারি 8 ত্রুটি ঠিক করার জন্য ধন্যবাদ।
জ্লাট্টি

যেহেতু ব্যবহারকারীর ঘড়িগুলি সঠিক হতে পারে না, তাই কোনও সার্ভার-সাইড, সঠিক টাইমস্ট্যাম্প পাওয়ার কোনও মানক উপায় আছে কি?
সিম

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