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
- menzili hareket ettirmek, ismini kaybetmesini sağlayacaktır 1 .
- 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:
- Bugünün tarihini ekle
- Bugünün tarihini güncelle
Hata ayıklama amacıyla kullanılıyor
- yalnızca tarih yerine tarih ve saat.
- 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