Google स्प्रैडशीट में स्वतः-अपडेट करने वाला कॉलम जो अंतिम संशोधित तिथि दिखा रहा है


37

अंतिम अपडेट के टाइमस्टैम्प को दिखाने के लिए कॉलम दो ऑटो-अपडेट के तरीके का पता लगाने की कोशिश करना। मुझे लगता है कि डॉक अंतिम संशोधन का टाइमस्टैम्प दिखाता है, लेकिन हमारे पास एक ही समय में डॉक तक पहुंचने और समायोजित करने वाले बहुत सारे ग्राहक हैं। इसलिए यह अनुरोध सामने रखा गया। मैं मानता हूं कि मैंने कोडिंग नहीं की है, इसलिए यह मेरे से परे है।

Myanda ने कुछ ऐसा पोस्ट किया था जो सही रास्ते पर लग रहा था, लेकिन हमें यकीन नहीं है कि इसे अपनी आवश्यकताओं के लिए कैसे लागू किया जाए:

Google स्प्रेडशीट टाइमस्टैम्प?


यदि आप हमें दस्तावेज़ से जोड़ सकते हैं, या आप जो खोज रहे हैं, उसका एक उदाहरण दस्तावेज़ प्रदान करने में मदद करेगा। मैं अपने अन्य उत्तर को तदनुसार संशोधित कर सकता हूं, लेकिन मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं। क्या आपको टाइमस्टैम्प से अपडेटेड एक एकल कक्ष की आवश्यकता है जो दिखाता है कि संपूर्ण स्प्रेडशीट कब अपडेट की गई थी?
OnenOnlyWalter

हे ओनेन। हम जो देख रहे हैं, वह कॉलम 2 में है, टाइमस्टैम्प के साथ प्रत्येक पंक्ति अपडेट किसी भी समय किसी भी सेल को उनकी संबंधित पंक्ति में अपडेट किया जाता है। मैं दुर्भाग्य से पोस्ट नहीं कर सकता क्योंकि यह दुर्भाग्यपूर्ण है। लेकिन इसमें 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()फ़ंक्शन है, इसलिए इसे आपकी स्प्रेडशीट की कोशिकाओं में कुछ और जोड़ने के बिना काम करना चाहिए, बस इसे संपादक में पेस्ट करें और इसे सहेजें।

टाइमस्टैम्प के लिए, मैंने प्रारूप को MM / dd / yy पर सेट किया और समय छोड़ा। यदि आप इसे बदलना चाहते हैं, तो आप इसका उपयोग बदल सकते हैं Utilities.formatDate


ओएनएन, यह पूरी तरह से काम करता है! आपको बहुत - बहुत धन्यवाद!
रिचगॉन्ज़लेज़

1
सुन के अच्छा लगा! क्या आप इस जवाब को एक चेक मार्क के साथ चिह्नित कर सकते हैं :) मैं कहूंगा कि यह इसलिए था ताकि अन्य लोग इस समाधान को जान सकें, लेकिन यह भी है कि मुझे इस तरह से अंक
मिलेंगे

करूँगा। यह निश्चित रूप से काम करता है। एक अनुवर्ती प्रश्न। तारीफ के तौर पर कुछ भी नहीं। PST में परिवर्तन करने से यह प्रशांत मानक समय में परिवर्तित नहीं होता है, लेकिन EST काम करता है। क्या जावा एक अलग संक्षिप्त नाम के रूप में पीएसटी पढ़ता है। और क्या एक समय को 12hr समय बनाम सैन्य समय के रूप में प्रदर्शित करने का एक तरीका है?
रिचगॉन्ज़लेज़

1
टाइमस्टैम्प मेरे लिए काम नहीं करता है। मेरे साथ "20yy-MM-dd HH: mm" इसके बजाय काम करता है। मुझे लगता है 'dd; कम होना है या यह काम नहीं करता है (जब तक कि जनवरी जो कि जब यह लिखा गया था, तो यह अहहाह है)।
रिकार्डो

1
ध्यान दें कि "DD" का उपयोग .formatDate()करने पर आपको "वर्ष में दिन" मिलेगा - उदाहरण के लिए 31 दिसंबर को 365। आप शायद "dd" चाहते हैं। आप दिनांक प्रारूप मानों की पूरी सूची यहां देख सकते हैं: docs.oracle.com/javase/7/docs/api/java/text/…
Dan Nguyen

8

FYI करें, स्वीकृत उत्तर DDदिन प्रारूप के रूप में उपयोग होता है , जो आपको "312", अर्थात वर्ष के 312 वें दिन जैसा कुछ मिलेगा।

मैंने इसका उपयोग किया:

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

इसे पाने के लिए:

2013-11-12, 03:43:20

1
स्वीकार किए गए उत्तर को सही क्यों नहीं किया?
एलेक्सकोवेल्स्की

अच्छा विचार: webapps.stackexchange.com/questions/37408/…
Dan Nguyen

4

मुझे उम्मीद है कि यह यहाँ डाल करने के लिए ठीक है। नीचे दिए गए फ़ंक्शन का एक संशोधन है, लेकिन इसे स्तंभों के बजाय एक पंक्ति (पंक्ति 9) के लिए करना है। कॉलम असाइनमेंट का उपयोग कैसे करना है यह पता लगाना बहुत निराशाजनक था लेकिन अंत में बेहद सरल था। मूल कोड के लिए OnenOnlyWalter का धन्यवाद:


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
  };
 };

यह मेरे लिए काफी अच्छा काम करता था। @ OnenOnlyWalter की पंक्ति 8 त्रुटि को ठीक करने के लिए धन्यवाद।
ज़्लाटी

चूंकि उपयोगकर्ता घड़ियां गलत हो सकती हैं, क्या सर्वर-साइड, सटीक टाइमस्टैम्प प्राप्त करने का एक मानक तरीका है?
सिम

@Sim Google Apps स्क्रिप्ट सर्वर-साइड चलती है। आपको मिलने वाला समय सर्वर से है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.