Makrolarda Uzmanlaşmak için Google Apps Komut Dosyası Eğitimi

Yayınlanan: 2022-03-11

Etkili yöneticiler, zamanın sınırlayıcı faktör olduğunu bilirler... Belki de başka hiçbir şey etkili yöneticileri, zamana karşı şefkatli sevgileri kadar ayırt edemez.

Peter Drucker

Zaman bizim en değerli kaynağımızdır. Bunu, yalnızca genellikle en yüksek parasal değeri taşıdıkları için değil, aynı zamanda sürekli olarak kendimize meydan okumak ve iş tatminimizi en üst düzeye çıkarmak için yapabileceğimiz en yüksek etkili ve en çok değer katan faaliyetlere harcamak istiyoruz.

Zamanınızı daha iyi kullanmak için verimliliğinizi ve üretkenliğinizi artırmanın birçok yolu vardır. Google E-Tablolar ile ilgili önceki bir makalede, çevrimiçi işbirliğinin gücünün artan üretkenlik için nasıl bir anahtar olduğunu ayrıntılı olarak ele almıştım.

Başka bir makalede, Python programlama dilinin finans profesyonelleri için nasıl güçlü bir analiz ve görev otomasyonu aracı olabileceğini gösterdim.

Bundan ilham alarak şimdi bir Google Apps Komut Dosyası öğreticisi sunmak istiyorum. Google Apps Komut Dosyası, E-Tablolar, Dokümanlar, Slaytlar, Gmail, Drive ve diğerleri dahil olmak üzere Google'ın G Suite'indeki ürünleri otomatikleştirmek, bağlamak ve genişletmek için JavaScript'te komut dosyaları ve programlar yazmanıza olanak tanır. Bunu öğrenmek, senaryo yazmak gibi zaman yatırımı gerektirir, ancak üretkenlik artar ve açtığı ek fırsatlar buna değer.

İlk adım olarak, tanıdık bir kavrama bakarak başlayalım: makrolar.

Google E-Tablolarda Makroları Kaydetme ve Kullanma

Excel ile çalışmak için çok zaman harcadıysanız, bir noktada Excel'in VBA (Visual Basic for Applications) makro arayüzü ile temasa geçmiş olmanız gerekir. Ya kendiniz kaydederek ya da yazarak ya da başkaları tarafından yaratılanları bindirerek.

Makrolar, tekrarlayan ve sıkıcı iş akışlarını otomatikleştirmenin harika bir yoludur. VBA, öğrenmeye çok zaman ayırdığınız bir dil olmayabilir, ancak güzelliği, üretken olmak ve kendi makrolarınızı oluşturmak için gerçekten ihtiyacınız olmamasıydı. Otomatikleştirmek istediğiniz iş akışını kaydedebilir ve ardından koda girebilir ve makroyu daha genel hale getirmek için gereken küçük değişiklikleri yapabilirsiniz.

Bazı yönlerden VBA, teknik bilgisi olmayan kişileri kodlamayla nasıl tanıştıracağınız konusunda harika ve unutulmuş bir derstir . Eylemleri kaydetme ve daha sonra gözden geçirmek üzere kodu doldurma yöntemi, gerçekten de ders kitaplarını okumak ve öğreticileri pasif bir şekilde izlemek yerine öğrenmenin çok daha pragmatik bir yoludur.

VBA'nın aynı kayıt işlevi Google E-Tablolar'da mevcuttur. İşte nasıl kullanılacağına dair basit bir örnek:

Bir tabloyu içe aktarmak için bir IMPORTHTML sorgusu kullanarak bazı örnek verilerle başlayalım. Bu örnekte, Wikipedia'dan dünyanın en büyük 15 hedge fonunun bir listesini indirdim. Söylemeye gerek yok, ama bu keyfi bir örnek; amaç, konuyla ilgili olarak uygulamaya daha fazla odaklanmanızdır.

Bir tabloyu içe aktarmak için kullanılan örnek veriler.

Makro kayıt işlemi aşağıdaki menü yolu ile başlatılır: Araçlar > Makrolar > Makro kaydet.

Daha sonra kaydetmek istediğimiz eylemleri (PC formatı) gözden geçiriyoruz:

  1. İlk satırı seçin
  2. Her şeyi seçmek için Shift + Ctrl + Aşağı Ok tuşlarına basın
  3. Ctrl + C kopyalamak için
  4. Yeni bir sayfa oluşturmak için Shift + F11
  5. Sayfaya yeni bir ad verin
  6. Değerleri yapıştırmak için Shift + Control + V tuşlarına basın

Bittiğinde, alttaki makro penceresindeki Kaydet düğmesine basın, ona bir ad ve isteğe bağlı bir klavye kısayolu verin.

Aynı adımlarla tam olarak çoğaltılabilecek daha basit eylemler için işlem burada sona erer ve makronuzu hemen kullanmaya başlayabilirsiniz. Ancak bu durumda, kod kullanılabilir hale gelmeden önce bazı değişiklikler yapmamız gerekiyor. Örneğin, kopyaladığımız sayfanın her seferinde farklı bir ada sahip olması gerekir. Bunu nasıl yapacağımıza bir bakalım.

Google Apps Komut Dosyasını Manuel Olarak Yazma

Şimdi ilk kez Google Apps Script'in kemiklerini göreceğiz; Google'ın sunucularında çalışan programlama platformu. Bu, makrolarımıza güç sağlar ve uygulamaların kendileri için çok karmaşık iş akışları ve hatta eklentiler oluşturmanıza olanak tanır. Yalnızca e-tablo çalışmasını değil, aynı zamanda Google'ın G Suite'inde birbirine bağlı hemen hemen her şeyi otomatikleştirmek için kullanılabilir.

Apps Komut Dosyası'nın programlama dili, en popüler programlama dillerinden biri olan JavaScript'tir ; bu, kapsamlı bir şekilde öğrenmek isteyen herkes için çok sayıda kaynak olduğu anlamına gelir. Ancak, tıpkı VBA'da olduğu gibi, gerçekten yapmanız gerekmez: aynı Kayıt işlevini kullanabilir ve otomatik olarak tekrar edebilmek için istediğiniz adımları yapabilirsiniz. Kaydın çıktısı kaba görünebilir ve büyük olasılıkla yapmak istediğiniz şeyle tam olarak eşleşmeyecektir, ancak yeterince sağlam bir başlangıç ​​noktası sağlayacaktır. Şimdi az önce kaydettiğimiz script için yapalım.

Kayıt yaparken, son kayıtta yakalanmasını istemediğiniz ek adımları yanlışlıkla kaydetmemeye dikkat etmek mantıklıdır, ancak bazen bundan kaçınmak zordur: Durdur düğmesine basmadan önce farklı bir hücre seçmek kadar basit bir şey. Kayıt düğmesi yakalanacak ve ardından komut dosyasını her çalıştırdığınızda tekrarlanacaktır. Komut dosyamızı düzenlerken ilk adım, onu temizlemek ve bu tür adımları kaldırmak olacaktır. Dosya menüsünde Araçlar > Komut Dosyası düzenleyicisine giderek konuya girelim.

komut dosyası düzenleyicisi

JavaScript'i biliyorsanız, bunu hemen tanıyacaksınız ve modern JavaScript'te göreceğiniz gibi "let" veya "const" yerine "var" anahtar sözcüğünü gördüğünüze şaşırabilirsiniz. Bu, Apps Komut Dosyasındaki JavaScript sürümünün oldukça eski olduğu ve dilin daha yeni özelliklerinin çoğunu desteklemediği gerçeğini yansıtır. Sonlara doğru, en yeni dil özelliklerini kullanmak isteyenler için bir geçici çözüm sunacağım.

Komut dosyasını ilk çalıştırdığınızda, komut dosyaları tüm verilerinizi değiştirebildiğinden (ve potansiyel olarak sildiği için) yetkilendirme isteyecektir. Yetkilendirme sürecini büyük olasılıkla diğer Google ürünlerinden tanıyacaksınız.

Şimdi kodu değiştirmeye başlayabiliriz. Yapmamız gereken değişiklikler önemsizdir, ancak bunu ilk kez yapıyorsanız, yine de Sheets Apps Komut Dosyası belgelerinde hızlı bir şekilde arama yapmanızı ve/veya tarihlerle çalışma gibi bir JavaScript kavramına hızlı bir şekilde bakmanızı gerektirebilir. JavaScript'in bu kadar yaygın bir dil olduğu gerçeği burada işe yarıyor: Karşılaştığınız sorun veya aklınıza gelen işlevler için bir çözüm, arama teriminizi basit bir şekilde ifade ederseniz, genellikle hızlı bir şekilde bulunabilir.

Komut dosyasının bu sürümünde, orijinal kaydedilen sürümden yapılan değişiklikler, oluşturduğumuz yeni sayfanın sabit kodlanmış adı yerine, şimdi onun yerine bugünün tarihiyle adlandırmamızdır. Ayrıca, bu yeni sayfaya atıfta bulunmak için sondaki kopyalama yolunu da değiştiriyoruz. Son dört satır ayrıca bir hücrenin değerini değiştirme, sütunları yeniden boyutlandırma ve kılavuz çizgilerini gizleme gibi bazı biçimlendirme işlemlerinin nasıl gerçekleştirileceğini gösterir.

 function createSnapshot() { var spreadsheet = SpreadsheetApp.getActive(); var date = new Date().toISOString().slice(0,10); var destination = spreadsheet.insertSheet(date); spreadsheet.getRange('HTML!A1:F1').activate(); spreadsheet.getSelection() .getNextDataRange(SpreadsheetApp.Direction.DOWN) .activate(); spreadsheet.getActiveRange() .copyTo(SpreadsheetApp.setActiveSheet(destination) .getRange(1,1), SpreadsheetApp.CopyPasteType.PASTE_VALUES,false); var sheet = spreadsheet.setActiveSheet(destination) sheet.getRange("D1").setValue("AUM $bn") sheet.setHiddenGridlines(true); sheet.getRange("A1:D1").setFontWeight("bold"); sheet.autoResizeColumns(1, 4); };

Komut dosyasını şimdi çalıştırmak, yeni sayfanın gerçekten de bugünün tarihiyle adlandırıldığını ve ana sayfadan değerler (formüller değil) olarak kopyalanan bilgileri içerdiğini gösterecektir.

Grafik görselleştirmeleri artık aynı kayıt işlemi kullanılarak eklenebilir. Bunu üç basit grafik oluşturmak için kullandım.

Grafik görselleştirmeleri.

Her biri için kodun temizlenmesi şuna benzer:

 function createColumnChart() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('C1:D16').activate(); var sheet = spreadsheet.getActiveSheet(); chart = sheet.newChart() .asColumnChart() .addRange(spreadsheet.getRange('B1:D16')) .setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS) .setTransposeRowsAndColumns(false) .setNumHeaders(-1) .setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH) .setOption('useFirstColumnAsDomain', true) .setOption('curveType', 'none') .setOption('domainAxis.direction', 1) .setOption('isStacked', 'absolute') .setOption('series.0.color', '#0b5394') .setOption('series.0.labelInLegend', 'AUM $bn') .setPosition(19, 6, 15, 5) .build(); sheet.insertChart(chart); };

Yine, bazı seçenekler kafa karıştırıcı görünüyorsa endişelenmeyin: bunların hepsi otomatik olarak oluşturulur, sadece gereksiz adımları kaldıracak kadar anlamanız ve belki daha sonra küçük ince ayarlar yapmanız gerekir.

Gelişmiş Google Apps Komut Dosyası Örnekleri: Sayfaları Google Drive ve Slaytlara Bağlama

Şimdi her şey şekillenmeye başlıyor, ama ya istediğimiz asıl çıktı bir elektronik tablo değil de bir sunumsa? Durum buysa, buradaki çalışmaların çoğu hala manuel olabilir ve bunu sürekli olarak yapmamız gerekiyorsa fazla zaman kazanmadık.

Şimdi, elektronik tablomuzdaki örnek verileri kullanarak bir sunumun oluşturulmasını otomatikleştirmenin nasıl görünebileceğini keşfedelim.

Bu alıştırma şimdi iki nedenden dolayı daha gelişmiş hale geliyor:

  1. E-Tablolar'a ek olarak Google Slaytlar (ve Google Drive) ile nasıl çalışacağımızı öğrenmemiz gerekecek.
  2. Slaytlar'da veya genel olarak G Suite Uygulamaları arasında çalışırken "Kayıt makrosu" işlevi yoktur. Bu, sıfırdan komut dosyaları yazmak için Apps Komut Dosyası hakkında yeterince bilgi sahibi olmanız (ve G Suite ürünlerinin her birinin belgelerinde rahatça gezinmeniz) gerektiği anlamına gelir.

Bu sonraki örnek, başlamanız ve alışmanız için bazı temel yapı taşları sağlamayı amaçlamaktadır.

Başlangıç ​​olarak, daha sonra betiğimizi kullanarak içerikle doldurmak istediğimiz bir şablon oluşturalım. İşte bir araya getirdiğim iki basit sunum slaydı:

Haftalık rapor şablonu.

Ardından, bu şablonun kimliğini almanız gerekecek çünkü komut dosyanızda buna başvurmanız gerekecek. Bilinçaltınızda bu kimliği birçok kez görmüş olacaksınız çünkü aslında tarayıcınızın URL'sinde gördüğünüz rastgele görünen karakter ve sayı dizisidir:

https://docs.google.com/presentation/p/ this_is_your_presentation_ID /edit#slide=id.p.

Şimdi orijinal betiğimize aşağıdaki satırları eklemeliyiz. Bu, bu sefer Google Drive'ınıza erişmek için tekrar yetkilendirme isteyecektir.

 function createPresentation() { var template; var template = DriveApp.getFileById(templateId); var copy = template.makeCopy("Weekly report " + date).getId(); var presentation = SlidesApp.openById(copy); }

Bu kod parçacığını çalıştırırsanız anında herhangi bir görsel geri bildirim görmezsiniz, ancak Google Drive'ınızın şablonu sakladığınız klasörüne bakarsanız, gerçekten bir kopyasının oluşturulduğunu ve bugünün bir kopyasının bulunduğunu göreceksiniz. dosya adındaki tarih. İyi bir başlangıç ​​yapıyoruz!

Şimdi, onu içerikle doldurmaya başlamak için elle yerine programlı olarak daha fazla yapı taşı kullanalım. Aynı işleve aşağıdaki satırları ekleyin:

 presentation.getSlides()[0] .getPageElements()[0] .asShape() .getText() .setText("Weekly Report " + date);

İlk sayfayı bugünün tarihini içerecek şekilde değiştirdiğimiz için işler biraz daha ilginçleşiyor. Slaytlar'da, E-Tablolar'da olduğu gibi, her biri özelliklere ve yöntemlere (ör. ekli işlevsellik) sahip nesnelerle (sınıflarla temsil edilen) çalışırsınız. Bunlar, en üst düzey nesne olan SpreadsheetsApp, DriveApp veya SlidesApp ile bir hiyerarşi içinde düzenlenir. Yukarıdaki kod parçacığında, düzenlemek istediğimiz öğeye ulaşmak için bu hiyerarşide adım adım ilerlememiz gerekiyor, bu durumda: Metin kutusundaki metin. Pratik olarak bu, sonunda düzenlemek istediğimiz TextRange nesnesine ulaşana kadar Presentation, Slide, PageElement ve Shape nesneleri aracılığıyla ulaşmak anlamına gelir.

Ne tür bir nesneyle uğraştığınızı takip etmek kafa karıştırıcı olabilir ve yanlış nesneye bir işlem uygulamaya çalışmaktan kaynaklanan hataların çözülmesi zor olabilir. Ne yazık ki, Komut Dosyası Düzenleyicisi'ndeki yardım işlevi ve hata mesajları, burada her zaman çok fazla rehberlik sağlamaz, gümüş astar, bu tür bir dikkatin en azından kalite kontrol uygulamalarınızı iyileştireceğidir.

Sunumu oluşturup başlığı güncelledikten sonra, şimdi yeni çizelgelerimizden birini buna eklemenin zamanı geldi. Nesnelerin hiyerarşisini akılda tutarak, aşağıdaki kodun şimdi anlamlı olması gerekir:

 var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getSheetByName(date); var chart = sheet.getCharts()[0]; var position = {left: 25, top: 75}; var size = {width: 480, height: 300}; presentation.getSlides()[1] .insertSheetsChart(chart, position.left, position.top, size.width, size.height);

Komut dosyasının tamamını çalıştırırsanız, çıktı sunumu şöyle görünmelidir:

Örnek sunum

Umarım, bu örnek ilkeleri gösterir ve kendi denemenize başlamanız için ilham verir. Bunu düşünürseniz, bugün şirketinizde gerçekten bu şekilde otomatikleştirilmesi gereken en az birkaç manuel çalışma örneği bulabileceğinize eminim. Verileri bir formattan ve/veya yerden diğerine mekanik olarak karıştırmak yerine düşünmek, analiz etmek ve muhakeme uygulamak için zaman kazanmaya hizmet etmek. Geliştirme Deneyimini İyileştirme Daha önce belirtildiği gibi, Google Apps Komut Dosyası'nda desteklenen JavaScript sürümü eskidir ve çevrimiçi Komut Dosyası Düzenleyicisinin işlevselliği çok sınırlıdır. Sadece bir makro kaydediyorsanız veya birkaç düzine satır yazıyorsanız, gerçekten fark etmeyeceksiniz. Bununla birlikte, haftalık veya aylık raporlamanızın tüm yönlerini otomatikleştirmek için iddialı planlarınız varsa veya eklentiler oluşturmak istiyorsanız, favori geliştirme ortamınızı kullanarak geliştirmenizi sağlayan bir komut satırı aracı olduğunu bilmekten memnun olacaksınız. .

Bu tür yeterlilik seviyelerindeyseniz, muhtemelen JavaScript'in sunduğu en yeni özelliklerden ve komut satırı aracıyla TypeScript'te de geliştirebileceğiniz için potansiyel olarak daha da fazlasından yararlanmak isteyeceksiniz.

Google E-Tablolar Programlama için Python'u Kullanma

Apps Komut Dosyası ile çalışmanın size uygun olmadığını fark ederseniz, kullanım durumuna bağlı olarak başka seçenekler de vardır. Daha gelişmiş sayı işleme yapmak, API'ler veya veritabanlarıyla bağlantı kurmak veya JavaScript yerine Python programlama dilini tercih etmek istiyorsanız, Google'ın İşbirliği paha biçilemez bir üründür. Size, Google Drive dosyalarınızla sorunsuz bir şekilde entegre olan Python komut dosyaları yazmanıza olanak tanıyan ve 'gspread' kitaplığı aracılığıyla e-tablo verilerinizle çalışmayı kolaylaştıran, Google sunucularında çalışan bir Jupyter not defteri verir.

Python ve Jupyter not defterleriyle iş ve finansal bağlamda çalışmaya yönelik nazik bir giriş olarak da hizmet eden finansal işlevler için nasıl kullanılacağına ilişkin bir makalede Python'un birçok faydasını özetledim. Benim için çok önemli bir avantaj, Apps Komut Dosyasının aksine, Colaboratory'deki Python not defterinin etkileşimli olması, dolayısıyla her satırı veya küçük kod bloğunu yürüttükten sonra sonuçları (veya hata mesajını) görmenizdir.

Otomasyon Bağımlılık Yapar

Bu Google Apps Komut Dosyası öğreticisi, Google'ın kodlama dili aracılığıyla nelerin mümkün olduğuna dair bir fikir verdi. Olasılıklar neredeyse sonsuzdur. Ancak, teknik bir geçmişiniz yoksa, kod örnekleri göz korkutucu görünebilir ve Google Apps Komut Dosyası'nı öğrenmekten elde edilen üretkenlik kazanımlarının, gereken zaman açısından önemli yatırımdan daha ağır basmaya yeterli olmayabileceğini kendi kendinize düşünebilirsiniz. öğrenmek için.

Bu, elbette, gelecekte ne tür bir role sahip olduğunuz veya sahip olmayı beklediğiniz gibi birçok faktöre bağlıdır. Ancak burada gösterilen örneklere benzer bir şey yapmayı beklemiyor olsanız bile, neyin mümkün olduğunu ve uygulamak için kabaca ne kadar çalışma gerektireceğini anlamak, şirketinizde üretkenliği nasıl artıracağınıza dair düşünceleri ve fikirleri tetikleyebilir. Müşterileriniz veya kişisel olarak kendiniz.

Şahsen, arkanıza yaslanıp, bir saatlik sıkıcı el işini bir dakikadan daha kısa sürede tamamlayan bir düğmeye basmanın memnuniyetini söyleyebilirim. Bunu 50. kez yaptıktan sonra, her şeyi bir araya getirmek için harcadığınız birkaç saat için minnettar olacaksınız, bu da nihayetinde daha fazla değer katan arayışlar için zamanınızı boşaltmaya hizmet etti. Bir süre sonra, bu ölçeklenebilirlik faydaları bağımlılık yapar.