Google Dokümanlar'da değişken olarak şu anki tarih mi?


12

Google Dokümanlar'a, belgeyi her açtığımda otomatik olarak güncellenecek geçerli tarih için bir değişken eklemek (eklemek) mümkün müdür?

Bazı kriterler:

  • Tarih konumu değişken olmalıdır, yani tarihi bir sayfanın / paragrafın farklı konumlarını eklememe izin verin

  • Doküman hala paylaşılabilir olmalıdır, yani dokümanı açan kişiler de geçerli tarihle görüntülenecektir


Geçerli tarihi hesaplamak için hangi saat dilimi kullanılmalıdır?
Rubén

Çok yönlü olması için belki kullanıcının kendisi tarafından ayarlarda tanımlanabilir? Veya bir şekilde kullanıcının Google Dokümanlar ayarlarından otomatik olarak getirilebilir mi?
orschiro

1
Kodlama girişimimi yeni ekledim. Saat dilimi ile ilgili olarak GMT-5 kullandım, ancak ihtiyacınız olana kolayca değiştirilebilir. Tam bir çözüm değil.
Rubén

Yanıtlar:


9

Kısa cevap

Şu anda, değişkenler Google Dokümanlar'ın yerleşik bir özelliği değildir ve Google Dokümanlar'ı genişletme platformu olan Google Apps Komut Dosyası, bunları işlemek için bir sınıf veya yöntem içermez.

Alternatifler

Alternatif 1

Alternatif olarak bir metin kalıbı kullanabilirsiniz, ancak bunun yalnızca güncellemek istediğiniz tarihle eşleşeceğinden emin olmalısınız.

Alternatif 2

Başka bir alternatif NamedRange sınıfını kullanmaktır, ancak

  1. menzili hareket ettirmek, ismini kaybetmesini sağlayacaktır 1 .
  2. adlandırılmış bir aralıktaki metni birden çok öğeyle değiştirmek yalnızca ilk kez çalışır 2 .

Kod:

Google Dokümanına bağlı bir komut dosyasında kullanılması amaçlanan aşağıdaki kodun iki ana işlevi vardır:

  1. Bugünün tarihini ekle
  2. Bugünün tarihini güncelle

Hata ayıklama amacıyla kullanılıyor

  1. yalnızca tarih yerine tarih ve saat.
  2. ana menüleri tetiklemek için özel menüler.

"Bilinen sorunlar": Güncelleme işlevi paragrafın tamamını değiştirir.

Kodu test etmek için kopyalayın, ardından Google Dokümanlarınıza gidin, yeni bir doküman oluşturun, Araçlar> Komut Dosyası Düzenleyici'yi tıklayın, Boş Proje'yi seçin, kodu yapıştırın, projeyi kaydedin, bir ad atayın, uygulamayı yetkilendirmek için zamanında çalıştırın , dokümanınızı kapatın ve tekrar açın. "Yardımcı Programlar" adlı yeni bir menü görüntülenecektir. Oradan ana işlevleri çağırabilirsiniz.

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


Aşağıda ilham almak veya bir "çözüm" bulmak için "doğru yönü" göstermek için kullanılabilecek farklı türden bazı sorular (sorular, özellikler vb.) Vardır.


Dipnotlar


Bu mümkün olmadığı anlamına mı geliyor?
Jacob Jan Tuinstra

@JacobJanTuinstra: IMHO, evet, bu mümkün değil. Mümkün olan bir çözüm bulmaktır, ancak daha fazla bağlam gereklidir. Ben bu bilgileri sorma yorumlarda yapılması gerektiğini düşünüyorum, ama henüz hiçbir yerde yorum yapamam :)
Rubén

1
@orschiro Senin için işe yaradığını bilmekten memnunum. Bir Chrome uzantısına yeniden düzenlenmek yerine, bir Google Dokümanlar eklentisine girilebileceğini düşünüyorum.
Rubén

1
@ChristopherFrancisco: Kod sınırlı komut dosyasında kullanılmak üzere tasarlanmıştır, ancak uygulamanızdan kullanılmak üzere uyarlanmış olabilir, ancak bu, Yığın Taşması için daha uygun olması muhtemelen farklı bir sorudur .
Rubén

1
@ChristopherFrancisco Google Dokümanlar düzenleyici dosyalarına komut dosyası sınırları hakkında resmi kılavuza bir bağlantı ekledim.
Rubén
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.