Google Dokümanlar'ın Kapsamını Genişletin

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.

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.