Google डॉक्स में एक चर के रूप में वर्तमान तिथि?


12

क्या Google दस्तावेज़ में वर्तमान तिथि के लिए एक चर जोड़ना (सम्मिलित करना) संभव है जो दस्तावेज़ को खोलने पर हर बार स्वचालित रूप से अपडेट हो जाएगा?

कुछ मानदंड:

  • तिथि की स्थिति परिवर्तनशील होनी चाहिए, अर्थात मुझे पृष्ठ / पैराग्राफ के विभिन्न पदों को सम्मिलित करने की अनुमति होगी

  • दस्तावेज़ को अभी भी साझा किया जाना चाहिए, अर्थात मेरे दस्तावेज़ खोलने वाले लोगों को भी वर्तमान तिथि के साथ प्रदर्शित किया जाएगा


वर्तमान तिथि की गणना करने के लिए किस समय क्षेत्र का उपयोग किया जाना चाहिए?
रुबेन

यह बहुमुखी होने के लिए, शायद उपयोगकर्ता द्वारा सेटिंग्स में खुद को परिभाषित किया गया है? या क्या इसे किसी तरह उपयोगकर्ता की Google डॉक्स सेटिंग से स्वचालित रूप से लाया जा सकता है?
orchichiro

1
बस मेरे कोडिंग प्रयास को जोड़ा। समय क्षेत्र के बारे में, मैंने GMT-5 का उपयोग किया लेकिन इसे आसानी से उसी में बदला जा सकता है जिसकी आपको आवश्यकता है। यह संपूर्ण समाधान नहीं है।
Rub

जवाबों:


9

संक्षिप्त जवाब

इस समय, चर Google डॉक्स और Google Apps स्क्रिप्ट की अंतर्निहित सुविधा नहीं है, Google डॉक्स को विस्तारित करने के लिए प्लेटफ़ॉर्म, उन्हें संभालने के लिए एक वर्ग या विधि शामिल नहीं करता है।

वैकल्पिक

वैकल्पिक 1

एक विकल्प एक पाठ पैटर्न का उपयोग करता है लेकिन आपको यह सुनिश्चित करना चाहिए कि यह केवल उस तिथि से मेल खाएगा जिसे आप अपडेट करना चाहते हैं।

वैकल्पिक 2

एक अन्य विकल्प वर्ग NamedRange का उपयोग करना है लेकिन यह ध्यान में रखना है

  1. रेंज को आगे बढ़ाने से यह होगा कि यह अपना नाम 1 खो देगा ।
  2. कई तत्वों के साथ नामांकित श्रेणी में पाठ को बदलना केवल पहली बार 2 काम करता है ।

कोड:

Google डॉक्यूमेंट से जुड़ी स्क्रिप्ट में उपयोग किए जाने वाले निम्नलिखित कोड के दो मुख्य कार्य हैं:

  1. आज की तारीख डालें
  2. आज की तारीख को अपडेट करें

डिबगिंग उद्देश्यों के लिए उपयोग किया जा रहा है

  1. केवल तारीख के बजाय तारीख और समय।
  2. कस्टम मेनू मुख्य कार्यों को ट्रिगर करने के लिए।

"ज्ञात-मुद्दे": अद्यतन फ़ंक्शन पूरे पैराग्राफ को बदल देता है।

कोड का परीक्षण करने के लिए, इसे कॉपी करें, फिर अपने Google डॉक्स पर जाएं, एक नया दस्तावेज़ बनाएं, टूल> स्क्रिप्ट एडिटर पर क्लिक करें, ब्लैंक प्रोजेक्ट चुनें, कोड पेस्ट करें, प्रोजेक्ट को सहेजें, एक नाम असाइन करें, ऐप को अधिकृत करने के लिए समय पर चलाएं। , अपने डॉक्टर को बंद करें और फिर से खोलें। "यूटिलिटीज" नामक एक नया मेनू प्रदर्शित किया जाएगा। वहां से आप मुख्य कार्यों को कॉल कर सकते हैं।

function onOpen() {
  // Add a menu with some items, some separators, and a sub-menu.
  DocumentApp.getUi().createMenu('Utilities')
      .addItem('Insert Today\'s Date', 'insertTodayAtCursor')
      .addItem('Update Today\'s Date', 'setTodayNamedRange')
      .addToUi();
}

function todayDate(){
  return Utilities.formatDate(new Date(), "GMT-5", "yyyy-MM-dd'T'HH:mm:ss'Z'"); // "yyyy-MM-dd"
}

/**
 * Inserts the today's date at the current cursor location and create a NamedRange.
 */
function insertTodayAtCursor() {
  var str = 'testToday';
  var doc = DocumentApp.getActiveDocument();
  var cursor = doc.getCursor();

  if (cursor) {
    // Attempt to insert today's date at the cursor position. If insertion returns null,
    // then the cursor's containing element doesn't allow text insertions.
    var date = todayDate();
    var element = cursor.insertText(date);
    if (element) {
      var rangeBuilder = doc.newRange();
      rangeBuilder.addElement(element);
      return doc.addNamedRange(str, rangeBuilder.build()); 
    } else {
      DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
    }
  } else {
    DocumentApp.getUi().alert('Cannot find a cursor in the document.');
  }
}

function setTodayNamedRange(){
  var str = 'testToday';
  var doc = DocumentApp.getActiveDocument();
  // Retrieve the named range
  var namedRanges = doc.getNamedRanges();
  var newRange = doc.newRange();
  var date = todayDate();
  for(var i=0; i<namedRanges.length; i++){

    if(namedRanges[i].getName() == str){

      var rangeElement = namedRanges[i].getRange().getRangeElements();

      for (var j=0; j<rangeElement.length; j++){

        var element = rangeElement[j].getElement().asText().editAsText().setText(date);
        newRange.addElement(element);
      }
    }
  }
  doc.addNamedRange(str, newRange.build());
}


नीचे विभिन्न प्रकार (प्रश्न, विनिर्देशों, आदि) के कुछ आइटम हैं जो "समाधान" खोजने के लिए प्रेरणा या "सही दिशा" की ओर इशारा करते हैं।


फुटनोट


क्या इसका मतलब यह संभव नहीं है?
याकूब जान टुंस्ट्रा

@JacobJanTuinstra: IMHO, हाँ, यह संभव नहीं है। क्या संभव हो सकता है कि वर्कअराउंड ढूंढा जाए लेकिन यह अधिक आवश्यक है। मुझे लगता है कि उस जानकारी के लिए पूछना टिप्पणियों में किया जाना चाहिए, लेकिन मैं अभी तक कहीं भी टिप्पणी नहीं कर सकता :)
Ruben

1
@orschiro मुझे यह जानकर खुशी हुई कि इसने आपके लिए काम किया। Chrome एक्सटेंशन में शामिल किए जाने के बजाय, Google डॉक्स ऐड-ऑन में हो सकता है, मुझे लगता है।
Rub

1
@ChristopherFrancisco: कोड का उपयोग बंधी हुई स्क्रिप्ट पर उपयोग करने के लिए किया जाता है, लेकिन इसे आपके ऐप से उपयोग किए जाने के लिए अनुकूलित किया जा सकता है, लेकिन यह एक अलग सवाल है कि यह बहुत संभावना है कि स्टैक ओवरफ्लो के लिए अधिक उपयुक्त हो ।
रुबेन

1
@ChristopherFrancisco मैंने अभी Google डॉक्स संपादक फ़ाइलों के लिए स्क्रिप्ट सीमा के बारे में आधिकारिक मार्गदर्शिका में एक लिंक जोड़ा है।
Ruben
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.