Google Apps Komut Dosyası, Dokümanlar'ı programatik olarak oluşturup değiştirmenize ve kullanıcı arayüzünü yeni menüler, iletişim kutuları ve kenar çubuklarıyla özelleştirmenize olanak tanır.
Temel bilgiler
Apps Komut Dosyası, Dokümanlar ile iki genel şekilde etkileşim kurabilir: Komut dosyasının kullanıcısı doküman için uygun izinlere sahipse herhangi bir komut dosyası doküman oluşturabilir veya değiştirebilir. Ayrıca, komut dosyası bir dokümana bağlanabilir. Bu durumda komut dosyası, kullanıcı arayüzünü değiştirme veya doküman açıldığında yanıt verme gibi özel yeteneklere sahip olur. Dokümanlar'da kapsayıcıya bağlı bir komut dosyası oluşturmak için Uzantılar > Apps Komut Dosyası'nı tıklayın.
Her iki durumda da aşağıdaki örnekte gösterildiği gibi Apps Script'in Document Service'ini kullanarak bir Dokümanlar dokümanıyla etkileşimde bulunabilirsiniz.
function createDoc() {
var doc = DocumentApp.create('Sample Document');
var documentTab = doc.getTab('t.0').asDocumentTab();
var body = documentTab.getBody();
var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']];
body.insertParagraph(0, doc.getName())
.setHeading(DocumentApp.ParagraphHeading.HEADING1);
table = body.appendTable(rowsData);
table.getRow(0).editAsText().setBold(true);
}
Yukarıdaki komut dosyası, kullanıcının Google Drive'ında yeni bir doküman oluşturur, ardından t.0 kimlikli sekmeyi (varsayılan ilk sekme) alır, dokümanın adıyla aynı metni içeren bir paragraf ekler, bu paragrafı başlık olarak biçimlendirir ve iki boyutlu bir dizideki değerlere dayalı bir tablo ekler. Ayrıca, DocumentApp.create çağrısını DocumentApp.openById veya openByUrl ile değiştirerek mevcut bir dokümanda da bu değişiklikleri yapabilir.
Bir dokümanın içinde oluşturulan komut dosyaları (kapsayıcıya bağlı) için
DocumentApp.getActiveDocument
ve Document.getActiveTab kullanın.
Doküman yapısı
Apps Komut Dosyası açısından bir Dokümanlar dokümanı, HTML belgesine benzer bir yapıya sahiptir. Yani bir doküman, her biri genellikle başka öğeler içeren öğeler (ör. Paragraph veya Table) içeren bir veya daha fazla Tab nesnesinden oluşur. Bir Dokümanlar dokümanını değiştiren çoğu komut dosyası, getTab ve asDocumentTab çağrısıyla başlar, ardından getBody gelir. Bunun nedeni, Body öğesinin, HeaderSection, FooterSection ve Footnotes dışındaki bir sekmedeki tüm öğeleri içeren temel bir öğe olmasıdır.
Ancak, hangi öğe türlerinin diğer türleri içerebileceğiyle ilgili kurallar vardır. Ayrıca, Apps Komut Dosyası'ndaki Doküman Hizmeti yalnızca belirli öğe türlerini diğer öğelere ekleyebilir. Aşağıdaki ağaçta, belirli bir öğe türünün hangi öğeleri içerebileceği gösterilmektedir.
Kalın olarak gösterilen öğeler eklenebilir. Kalın olmayan öğeler yalnızca yerinde değiştirilebilir.
- Belge
- Sekme
- DocumentTab
- Body
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- Metin
- UnsupportedElement (sayfa numarası vb.)
- Paragraf
- HorizontalRule
- InlineDrawing
- InlineImage
- Metin
- UnsupportedElement (sayfa numarası vb.)
- Tablo
- ListItem
- FooterSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- Metin
- UnsupportedElement (sayfa numarası vb.)
- Paragraf
- HorizontalRule
- InlineDrawing
- InlineImage
- Metin
- UnsupportedElement (sayfa numarası vb.)
- Tablo
- ListItem
- FootnoteSection
- DocumentTab
- Sekme
Metni değiştir
Apps Komut Dosyası, Dokümanlar'daki metinleri değiştirmek için sıklıkla kullanılır. Müşteri bilgileriyle dolu bir e-tablonuz olduğunu ve her müşteri için kişiselleştirilmiş Dokümanlar oluşturmak istediğinizi varsayalım. (Bu tür bir işleme genellikle posta birleştirme denir.)
Metni, çoğu JavaScript replaceText
normal ifade
özelliğini destekleyen yöntemi kullanarak değiştirebilirsiniz. Aşağıdaki örnekte, ilk işlev belgeye yer tutucu metin ekler, ikinci işlev ise bu metni bir client nesnesindeki özelliklerle değiştirir.
Bu işlevlerin her ikisi de yalnızca Dokümanlar belgesinde oluşturulan komut dosyaları için geçerli olan getActiveDocument ve getActiveTab yöntemlerini kullanır. Bağımsız bir komut dosyasında bunun yerine DocumentApp.create, openById veya openByUrl yöntemlerini Document.getTab ile birlikte kullanın.
Bazı yer tutucular ekleyin
function createPlaceholders() {
var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody();
body.appendParagraph('{name}');
body.appendParagraph('{address}');
body.appendParagraph('{city} {state} {zip}');
}
Yer tutucuları değiştirin
function searchAndReplace() {
var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody();
var client = {
name: 'Joe Script-Guru',
address: '100 Script Rd',
city: 'Scriptville',
state: 'GA',
zip: 94043
};
body.replaceText('{name}', client.name);
body.replaceText('{address}', client.address);
body.replaceText('{city}', client.city);
body.replaceText('{state}', client.state);
body.replaceText('{zip}', client.zip);
}
Özel menüler ve kullanıcı arayüzleri
Özel menüler, iletişim kutuları ve kenar çubukları ekleyerek Dokümanlar'ı özelleştirebilirsiniz. Bir komut dosyasının yalnızca bağlı olduğu dokümanın kullanıcı arayüzüyle etkileşimde bulunabileceğini unutmayın.
HTML ve CSS ile özel arayüzler oluşturma hakkında daha fazla bilgi edinmek için HTML Hizmeti kılavuzuna bakın. Arayüzünüzü eklenti olarak yayınlamayı planlıyorsanız görünümünün Dokümanlar düzenleyicisiyle tutarlı olması için stil kılavuzuna uyun.
Dokümanlar için eklentiler
Eklentiler, Dokümanlar'da çalışır ve Dokümanlar eklenti mağazasından yüklenebilir. Dokümanlar için bir komut dosyası geliştirdiyseniz ve bunu dünyayla paylaşmak istiyorsanız Apps Komut Dosyası, komut dosyanızı eklenti mağazasından diğer kullanıcıların yükleyebileceği bir eklenti olarak yayınlamanıza olanak tanır.
Dokümanlar için eklenti oluşturmak istiyorsanız Dokümanlar eklentileri oluşturmayla ilgili hızlı başlangıç kılavuzuna göz atın.
Tetikleyiciler
Google Doküman'a bağlı komut dosyaları, dokümanın onOpen etkinliğine yanıt vermek için basit tetikleyici kullanabilir. Bu etkinlik, dokümana düzenleme erişimi olan bir kullanıcı dokümanı Dokümanlar'da her açtığında gerçekleşir.
Tetikleyiciyi ayarlamak için onOpen adlı bir işlev yazın. Bu tetikleyiciyle ilgili bir örnek için Google Workspace'te özel menüler başlıklı makaleyi inceleyin.
Menü eklemek için tetikleyiciyi kullanabilirsiniz ancak yetkilendirme gerektiren Apps Komut Dosyası hizmetlerini kullanamazsınız.