मैं Google डॉक्स स्प्रेडशीट में स्वचालित रूप से "अंतिम अद्यतन" सेल कैसे सेट कर सकता हूं?


21

मैं Google डॉक्स स्प्रेडशीट में स्वचालित रूप से "अंतिम अपडेट" सेल कैसे सेट कर सकता हूं?

मैं एक कॉलम बनाना चाहता हूं जहां कोशिकाओं का मूल्य स्वचालित रूप से उस पंक्ति में सेट हो जाएगा जब अंतिम बार संशोधन किया गया था। क्या यह संभव है? मैं इसे कैसे सेट करूं / इसे सेट करने के लिए मैं किस विकल्प का उपयोग करूं?

मुझे MS Excel के लिए वर्कअराउंड दिखाई देता है लेकिन मुझे लगता है कि Google डॉक्स में भी कुछ ऐसा ही होना चाहिए, है ना? (उंगलियों को पार कर)

हमारे पास एक बड़ी शीट को संपादित करने वाले कई लोग हैं। हम संशोधन इतिहास देख सकते हैं, लेकिन यह अच्छा होगा यदि हमारे पास "अंतिम अपडेटेड" तारीखों का एक कॉलम भी हो।


आपने कोशिश की है? यदि यह काम करता है, तो कृपया इस तरह से चिह्नित करें, webapps.stackexchange.com/faq#howtoask देखें ।
याकूब जान तुइंस्ट्रा

जवाबों:


20

जब एक सेल संपादित किया जाता है, तो कैप्चर करने के लिए आप Google Apps स्क्रिप्ट को जोड़ने का प्रयास कर सकते हैं और एक अलग सेल में टाइमस्टैम्प जोड़ सकते हैं। यहां एक पिछला जवाब है जो समान है: Google स्प्रेडशीट टाइमस्टैम्प?

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
   var r = s.getActiveCell();
   if( r.getColumn() == 13 ) { //checks the column
     var nextCell = r.offset(0, 1);
     if( nextCell.getValue() === '' ) //is empty?
       var time = new Date();
       time = Utilities.formatDate(time, "GMT", "HH:mm:ss");
       nextCell.setValue(time);
   };
 };
}

अच्छा लग रहा है मैं इसे एक कोशिश करूँगा
cwd


14

=iferror(A1+B1+C1+D1+J1+K1+L1+"x",today())जब भी पंक्ति में कोशिकाएँ सूत्र को बदलकर पुनः गणना करती हैं। समीकरण में "x" के साथ यह एक त्रुटि की गारंटी देता है। जो बदले में, तारीख लौटाता है।


5
यह एक दिलचस्प क्लूज है।
एले

1
सबसे सुंदर समाधान मैंने कभी देखा है :)
mafonya

5
जहाँ तक मैं बता सकता हूँ, यह वास्तव में काम नहीं करता है। स्पष्ट होने के लिए, यह काम करता है, लेकिन यह विशिष्ट पंक्तियों के लिए अद्यतन नहीं है। जब मैं इसे डालता हूं और इसे कई पंक्तियों के माध्यम से खींचता हूं, तो शीट पर कहीं भी कुछ भी संपादित करें, सभी पंक्तियों को पुनर्गणना और अद्यतन किया जाता है।
nhgrif

1
वाह! इसने मेरे लिए काम किया। यहाँ एक छोटा संस्करण है: = iferror (SUM (A2: O2) + "x", आज ()) और इसे स्वचालित रूप से अपडेट किए गए पंक्ति संख्याओं को खींच रहा है।
इल्या इवडोकिमोव

1

यह मेरी स्क्रिप्ट है, इस जानकारी को अंतिम कॉलम में रखें:

  1. सेल में सम्मिलित करें (आपके द्वारा संशोधित पंक्ति के लिए अंतिम सेल = lastcolumn में) - GMT -3 में दिनांक, यदि आप उसी को अन्य TZ में रखना चाहते हैं, तो आपके लिए समकालिक timezone -3 को संशोधित करें। यदि आप अपने डिफ़ॉल्ट TZ में स्वतः दिनांक डालना चाहते हैं, तो इसे संशोधित करें:

    var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    to
    var date = Utilities.formatDate(new Date());
    
  2. सेल + उपयोगकर्ता के साथ एक टिप्पणी डालें जो इसे संशोधित करते हैं।

  3. जब आप कुछ अद्यतन करते हैं तो एक पॉपअप प्रकट करें। केवल ActiveUser के लिए दिखाई देते हैं।

    function onEdit(event)
    {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var actSht = event.source.getActiveSheet();
        var actRng = event.source.getActiveRange();
    
        var index = actRng.getRowIndex();
        var dateCol = actSht.getLastColumn();
        var lastCell = actSht.getRange(index,dateCol);
        var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    
        lastCell.setValue(date);
        lastCell.setComment("Ultima Modificacion: " + actRng.getA1Notation() +' por '+Session.getActiveUser());
        ss.toast('Ultima Modificacion = '+ actRng.getA1Notation()+' por '+Session.getActiveUser());
    }
    

1

मैंने एक फ़ंक्शन बनाया है जो संदर्भित सेल को संशोधित करने पर एक नई तारीख लिखता है। इस स्थिति में सेल का मूल्य TRUE या FALSE है लेकिन आप इसे किसी भी मूल्य पर संपादित कर सकते हैं।

function WhenUpdated(cell1) {
  if(cell1){
    return new Date();
  }
  else return null;
}

1

यहां एक संस्करण है जो कॉलम संख्या को हार्डकोड करने के बजाय हेडर का उपयोग करके कॉलम ढूंढता है, और एक कस्टम समय क्षेत्र का उपयोग करता है:

function updateModified(options) {
  var sheet = SpreadsheetApp.getActiveSheet();
  if (options.sheetName && sheet.getName() != options.sheetName) {
    return;
  }

  var modifiedColumnName = options.modifiedColumnName || 'Modified';
  var header = sheet.getDataRange().offset(0, 0, 1).getValues()[0];
  var modifiedColumn;
  for (var i=0; i < header.length; i++) {
    if (header[i].trim() == modifiedColumnName) {
      modifiedColumn = i + 1;
      break;
    }
  }
  if (typeof modifiedColumn != 'number') {
    throw new Error("Can't find column with name: " + modifiedColumnName);
  }

  var activeCell = sheet.getActiveCell();
  if (activeCell.getColumn() == modifiedColumn) {
    return;
  }

  var modifiedCell = sheet.getRange(activeCell.getRow(), modifiedColumn);
  var formattedDate = Utilities.formatDate(new Date(), "America/Los_Angeles", "M/dd/yy HH:mm");
  modifiedCell.setValue(formattedDate);
}

function onEdit() {
  updateModified({sheetName: 'Jobs'});
}

UTC का उपयोग करने के लिए, बस समय क्षेत्र को UTC में बदलें।


-4

बस एक सेल में "अंतिम अद्यतन:" टाइप करें और उसके बगल में स्थित सेल में "= now ()" टाइप करें! वह काम करना चाहिए!


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