Hướng dẫn về Tập lệnh Google Apps để Làm chủ Macro

Các giám đốc điều hành hiệu quả biết rằng thời gian là yếu tố giới hạn… Có lẽ, không có gì khác phân biệt các giám đốc điều hành hiệu quả bằng sự quan tâm yêu thương dịu dàng của họ đối với thời gian.

Peter Drucker

Thời gian là tài nguyên quý giá nhất của chúng ta. Chúng tôi muốn dành nó cho các hoạt động có tác động cao nhất và tích lũy giá trị nhất mà chúng tôi có thể, không chỉ vì những hoạt động đó thường mang giá trị tiền tệ cao nhất mà còn để liên tục thử thách bản thân và tối đa hóa sự hài lòng trong công việc của chúng tôi.

Có nhiều cách để cải thiện hiệu quả và năng suất của bạn để tận dụng thời gian của bạn tốt hơn. Trong một bài viết trước về Google Trang tính, tôi đã giải thích cặn kẽ về sức mạnh của cộng tác trực tuyến là một trong những chìa khóa để tăng năng suất như thế nào.

Trong một bài viết khác, tôi đã trình bày cách ngôn ngữ lập trình Python có thể trở thành một công cụ tự động hóa nhiệm vụ và phân tích mạnh mẽ cho các chuyên gia tài chính.

Lấy cảm hứng từ điều này, bây giờ tôi muốn giới thiệu một hướng dẫn về Google Apps Script. Google Apps Script cho phép bạn viết các tập lệnh và chương trình bằng JavaScript để tự động hóa, kết nối và mở rộng các sản phẩm trong G Suite của Google, bao gồm Trang tính, Tài liệu, Trang trình bày, Gmail, Drive và một số sản phẩm khác. Học nó đòi hỏi đầu tư về thời gian, cũng như viết kịch bản, nhưng năng suất tăng lên và các cơ hội bổ sung mà nó mở ra khiến nó rất xứng đáng.

Bước đầu tiên, hãy bắt đầu bằng cách xem xét một khái niệm quen thuộc:macro.

Ghi và Sử dụng Macro trong Google Trang tính

Nếu bạn đã dành nhiều thời gian làm việc với Excel, thì bạn chắc chắn đã tiếp xúc với giao diện macro VBA (Visual Basic for Applications) của Excel tại một thời điểm nào đó. Thông qua việc ghi âm hoặc viết chúng cho chính bạn hoặc cõng những cái do người khác tạo ra.

Macro là một cách tuyệt vời để tự động hóa quy trình làm việc lặp đi lặp lại và tẻ nhạt. VBA có thể không phải là ngôn ngữ mà bạn dành nhiều thời gian để học, nhưng vẻ đẹp của nó là bạn không thực sự cần để trở nên hiệu quả và tạo macro của riêng mình. Bạn có thể chỉ cần ghi lại quy trình công việc bạn muốn tự động hóa, sau đó đi vào mã và thực hiện bất kỳ thay đổi nhỏ nào cần thiết để làm cho macro tổng quát hơn.

Về mặt nào đó, VBA là một bài học tuyệt vời và bị lãng quên về cách giới thiệu những người không am hiểu kỹ thuật về lập trình . Cách bạn có thể ghi lại các hành động và sau đó điền mã để xem lại sau này thực sự là một cách học thực dụng hơn nhiều so với việc đọc sách giáo khoa và xem hướng dẫn một cách thụ động.

Chức năng ghi tương tự của VBA có sẵn trong Google Trang tính. Đây là một ví dụ đơn giản về cách sử dụng nó:

Hãy bắt đầu với một số dữ liệu mẫu, sử dụng truy vấn IMPORTHTML để nhập bảng. Trong ví dụ này, tôi đã tải xuống danh sách 15 quỹ đầu cơ lớn nhất trên thế giới từ Wikipedia. Không cần phải nói, nhưng, đây là một ví dụ tùy ý; mục đích là để bạn tập trung hơn vào ứng dụng, về chủ đề.

Quá trình ghi macro được thực hiện thông qua đường dẫn menu sau:Công cụ> Macro> Ghi macro.

Sau đó, chúng tôi xem qua các hành động (định dạng PC) mà chúng tôi muốn ghi lại:

  1. Chọn hàng đầu tiên
  2. Nhấn Shift + Ctrl + Mũi tên Xuống để chọn mọi thứ
  3. Ctrl + C để sao chép
  4. Shift + F11 để tạo trang tính mới
  5. Đặt tên mới cho trang tính
  6. Nhấn Shift + Control + V để dán các giá trị

Sau khi hoàn tất, hãy nhấn nút Lưu trên cửa sổ macro ở dưới cùng, đặt tên cho nó và một phím tắt tùy chọn.

Đối với các hành động đơn giản hơn có thể được sao chép chính xác thông qua các bước tương tự, quy trình sẽ kết thúc ở đây và bạn có thể bắt đầu sử dụng macro của mình ngay lập tức. Tuy nhiên, trong trường hợp này, chúng ta cần thực hiện một số thay đổi trước khi mã có thể sử dụng được. Ví dụ:trang tính mà chúng tôi sao chép vào mỗi lần cần phải có một tên khác. Hãy xem cách thực hiện việc này.

Viết Google Apps Script theo cách thủ công

Giờ đây, lần đầu tiên chúng ta sẽ thấy phần xương của Google Apps Script; nền tảng lập trình chạy trên máy chủ của Google. Điều này cung cấp năng lượng cho các macro của chúng tôi và cho phép bạn tạo các quy trình công việc rất phức tạp và thậm chí là các tiện ích bổ sung, cho chính các ứng dụng. Nó có thể được sử dụng để tự động hóa không chỉ công việc của bảng tính mà còn trên thực tế hầu hết mọi thứ được kết nối với nhau trong G Suite của Google.

Ngôn ngữ lập trình của Apps Script là JavaScript , một trong những ngôn ngữ lập trình phổ biến nhất, có nghĩa là có vô số tài nguyên dành cho bất kỳ ai muốn tìm hiểu sâu rộng. Tuy nhiên, cũng như với VBA, bạn không thực sự cần:bạn có thể sử dụng cùng một chức năng Ghi và chỉ cần thực hiện các bước bạn muốn để có thể tự động lặp lại. Đầu ra từ bản ghi có thể trông thô và rất có thể sẽ không khớp hoàn toàn với những gì bạn muốn hoàn thành, nhưng nó sẽ cung cấp một điểm khởi đầu đủ vững chắc. Bây giờ hãy làm điều đó cho tập lệnh mà chúng tôi vừa ghi lại.

Khi ghi âm, bạn nên cẩn thận để không vô tình ghi lại bất kỳ bước bổ sung nào mà bạn không muốn bị ghi lại trong bản ghi cuối cùng, nhưng đôi khi rất khó tránh:một việc đơn giản như chọn một ô khác trước khi nhấn Dừng Nút ghi sẽ được ghi lại và sau đó lặp lại mỗi khi bạn chạy tập lệnh. Bước đầu tiên khi chỉnh sửa tập lệnh của chúng tôi sẽ là làm sạch nó và loại bỏ bất kỳ bước nào như vậy. Hãy đi sâu vào phần Công cụ> Trình chỉnh sửa tập lệnh trong menu tệp.

Nếu bạn biết JavaScript, bạn sẽ nhận ra điều này ngay lập tức và bạn cũng có thể ngạc nhiên khi thấy từ khóa “var” thay vì “let” hoặc “const” như bạn thấy trong JavaScript hiện đại. Điều này phản ánh thực tế là phiên bản JavaScript trong Apps Script đã khá cũ và không hỗ trợ nhiều tính năng mới hơn của ngôn ngữ. Tuy nhiên, về phần cuối, tôi sẽ giới thiệu một cách giải quyết cho những ai muốn sử dụng các tính năng ngôn ngữ mới nhất.

Khi bạn chạy tập lệnh lần đầu tiên, tập lệnh sẽ yêu cầu ủy quyền, điều này có ý nghĩa, vì tập lệnh có thể sửa đổi (và có khả năng xóa) tất cả dữ liệu của bạn. Rất có thể bạn sẽ nhận ra quy trình ủy quyền từ các sản phẩm khác của Google.

Bây giờ chúng ta có thể bắt đầu sửa đổi mã. Những thay đổi chúng tôi cần thực hiện là nhỏ, nhưng nếu bạn thực hiện điều này lần đầu tiên, nó vẫn có thể yêu cầu tìm kiếm nhanh thông qua tài liệu Sheets Apps Script và / hoặc tra cứu nhanh khái niệm JavaScript, chẳng hạn như làm việc với ngày tháng. Đây thực tế là JavaScript là một ngôn ngữ phổ biến rất hữu ích:Giải pháp cho bất kỳ vấn đề nào bạn gặp phải hoặc chức năng mà bạn nghĩ đến thường có thể được tìm thấy nhanh chóng nếu bạn diễn đạt cụm từ tìm kiếm của mình một cách dễ hiểu.

Những thay đổi được thực hiện trong phiên bản này của tập lệnh so với phiên bản được ghi ban đầu là thay vì tên mã cứng cho trang tính mới mà chúng tôi tạo, giờ đây chúng tôi đặt tên nó bằng ngày hôm nay. Ngoài ra, chúng tôi cũng thay đổi đường dẫn sao chép ở cuối để tham chiếu đến trang tính mới này. Bốn hàng cuối cùng cũng trình bày cách thực hiện một số thao tác định dạng, chẳng hạn như thay đổi giá trị của ô, thay đổi kích thước cột và ẩn đường lưới.

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

Chạy tập lệnh ngay bây giờ sẽ cho thấy rằng trang tính mới thực sự được đặt tên với ngày hôm nay và chứa thông tin được sao chép dưới dạng giá trị (không phải công thức) từ trang tính chính.

Hiện có thể thêm trực quan hóa biểu đồ bằng cách sử dụng cùng một quy trình ghi. Tôi đã sử dụng điều này để tạo ba biểu đồ đơn giản.

Làm sạch mã cho mỗi mã sẽ trông giống như sau:

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

Một lần nữa, đừng lo lắng nếu một số tùy chọn trông khó hiểu:tất cả đều được tạo tự động, bạn chỉ cần hiểu đủ để loại bỏ các bước không cần thiết và có thể thực hiện các chỉnh sửa nhỏ sau này.

Ví dụ về Tập lệnh Google Apps nâng cao:Kết nối Trang tính với Google Drive và Trang trình bày

Mọi thứ bây giờ đang bắt đầu thành hình, nhưng điều gì sẽ xảy ra nếu đầu ra thực sự mà chúng ta muốn không phải là một bảng tính mà là một bản trình bày? Nếu đúng như vậy, thì hầu hết công việc từ đây có thể vẫn là thủ công và chúng tôi đã không tiết kiệm được nhiều thời gian nếu chúng tôi cần phải làm việc này định kỳ.

Bây giờ chúng ta hãy khám phá xem việc tự động tạo bản trình bày có thể trông như thế nào bằng cách sử dụng dữ liệu mẫu từ bảng tính của chúng tôi.

Bài tập này hiện trở nên nâng cao hơn vì hai lý do:

  1. Ngoài Trang tính, chúng tôi cần tự làm quen với cách làm việc với Google Trang trình bày (và Google Drive).
  2. Trong Trang trình bày hoặc khi làm việc giữa các Ứng dụng G Suite nói chung, không có chức năng "Ghi macro". Điều này có nghĩa là bạn cần phải biết đầy đủ về Apps Script (và có thể thoải mái điều hướng tài liệu cho từng sản phẩm G Suite) để viết tập lệnh từ đầu.

Ví dụ tiếp theo này nhằm cung cấp một số khối xây dựng cơ bản để giúp bạn bắt đầu và làm quen.

Để bắt đầu, hãy tạo một mẫu mà sau này chúng tôi muốn điền vào nội dung bằng cách sử dụng tập lệnh của chúng tôi. Đây là hai slide thuyết trình đơn giản mà tôi đã tổng hợp lại với nhau:

Tiếp theo, bạn sẽ cần lấy ID của mẫu này vì bạn sẽ phải tham chiếu đến nó trong tập lệnh của mình. Trong tiềm thức, bạn sẽ thấy ID này nhiều lần vì trên thực tế, nó là chuỗi ký tự và số được tìm kiếm ngẫu nhiên mà bạn thấy trong URL của trình duyệt của mình:

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

Bây giờ chúng ta phải thêm các dòng sau vào kịch bản gốc của chúng ta. Thao tác này sẽ lại nhắc bạn cho phép, lần này để truy cập vào Google Drive của bạn.

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

Bạn sẽ không thấy bất kỳ phản hồi trực quan nào ngay lập tức nếu chạy đoạn mã này, nhưng nếu bạn nhìn vào thư mục Google Drive nơi bạn đã lưu trữ mẫu, bạn sẽ thấy rằng một bản sao của nó thực sự đã được tạo và nó có ngày hôm nay. ngày trong tên tệp. Chúng ta đã có một khởi đầu tốt!

Bây giờ chúng ta hãy sử dụng nhiều khối xây dựng hơn để bắt đầu lấp đầy nó bằng nội dung, theo chương trình thay vì bằng tay. Thêm các hàng sau vào cùng một chức năng:

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

Giờ đây, mọi thứ đang trở nên thú vị hơn một chút, vì chúng tôi đã thay đổi trang đầu tiên để bao gồm ngày hôm nay. Trong Trang trình bày, cũng như trong Trang tính, bạn làm việc với các đối tượng (được đại diện bởi các lớp) mà mỗi đối tượng có thuộc tính và phương thức (tức là chức năng đính kèm). Chúng được tổ chức theo hệ thống phân cấp, với SpreadsheetsApp, DriveApp hoặc SlidesApp là đối tượng cấp cao nhất. Trong đoạn mã ở trên, chúng ta cần di chuyển từng bước qua hệ thống phân cấp này để đến phần tử chúng ta muốn chỉnh sửa, trong trường hợp này:Văn bản trong hộp văn bản. Thực tế mà nói, điều này có nghĩa là tiếp cận thông qua các đối tượng Presentation, Slide, PageElement và Shape, cho đến khi cuối cùng chúng ta đến được đối tượng TextRange mà chúng ta muốn chỉnh sửa.

Theo dõi loại đối tượng mà bạn đang xử lý có thể gây nhầm lẫn và các lỗi do cố gắng áp dụng một thao tác cho đối tượng sai có thể khó giải quyết. Rất tiếc, bản thân chức năng trợ giúp và thông báo lỗi trong Trình chỉnh sửa tập lệnh không phải lúc nào cũng cung cấp nhiều hướng dẫn ở đây, điều đáng chú ý là sự chú ý như vậy ít nhất sẽ cải thiện các phương pháp kiểm soát chất lượng của bạn.

Sau khi tạo bản trình bày và cập nhật tiêu đề, bây giờ đã đến lúc chèn một trong các biểu đồ mới của chúng tôi vào đó. Lưu ý đến hệ thống phân cấp của các đối tượng, đoạn mã sau đây sẽ có ý nghĩa:

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

Nếu bạn chạy tập lệnh đầy đủ, bản trình bày đầu ra sẽ trông giống như sau:

Hy vọng rằng, ví dụ này minh họa các nguyên tắc và cung cấp nguồn cảm hứng để bạn bắt đầu với thử nghiệm của riêng mình. Nếu bạn nghĩ về điều này, tôi chắc chắn rằng bạn có thể tìm thấy ít nhất một vài ví dụ về công việc thủ công được thực hiện trong công ty của bạn ngày nay thực sự nên được tự động hóa theo cách này. Phục vụ để giải phóng thời gian suy nghĩ, phân tích và áp dụng phán đoán, thay vì xáo trộn dữ liệu một cách máy móc từ định dạng này sang định dạng và / hoặc vị trí khác. của Trình chỉnh sửa tập lệnh trực tuyến rất hạn chế. Nếu bạn chỉ đang ghi macro hoặc viết vài chục dòng, bạn sẽ không thực sự chú ý. Tuy nhiên, nếu bạn có kế hoạch đầy tham vọng để tự động hóa tất cả các khía cạnh của báo cáo hàng tuần hoặc hàng tháng hoặc muốn xây dựng các plugin, thì bạn sẽ rất vui khi biết rằng có một công cụ dòng lệnh cho phép bạn phát triển bằng cách sử dụng môi trường phát triển yêu thích của mình .

Nếu bạn đang ở mức độ thành thạo như vậy, thì có thể bạn cũng sẽ muốn tận dụng các tính năng mới nhất mà JavaScript cung cấp, và thậm chí có thể hơn thế nữa, vì với công cụ dòng lệnh, bạn cũng có thể phát triển trong TypeScript.

Sử dụng Python cho lập trình Google Trang tính

Nếu bạn thấy rằng làm việc với Apps Script không phải là tách trà của bạn, thì có các tùy chọn khác, tùy thuộc vào trường hợp sử dụng. Nếu bạn muốn bẻ khóa số nâng cao hơn, kết nối với API hoặc cơ sở dữ liệu hoặc đơn giản là thích ngôn ngữ lập trình Python hơn JavaScript, thì Colaboratory của Google là một sản phẩm vô giá. Nó cung cấp cho bạn một sổ ghi chép Jupyter chạy trên máy chủ của Google cho phép bạn viết các tập lệnh Python tích hợp liền mạch với các tệp Google Drive của bạn và thông qua thư viện "gspread", giúp bạn dễ dàng làm việc với dữ liệu bảng tính của mình.

Tôi đã nêu ra nhiều lợi ích của Python trong một bài viết về cách sử dụng nó cho các chức năng tài chính, đây cũng là phần giới thiệu nhẹ nhàng về cách làm việc với các máy tính xách tay Python và Jupyter trong bối cảnh kinh doanh và tài chính. Một lợi ích rất quan trọng đối với tôi là không giống như Apps Script, sổ ghi chép Python trong Colaboratory có tính tương tác, vì vậy bạn sẽ thấy kết quả (hoặc thông báo lỗi) sau khi thực hiện từng dòng hoặc khối mã nhỏ.

Tự động hóa gây nghiện

Hướng dẫn về Google Apps Script này đã cho thấy một cái nhìn sơ lược về những gì có thể xảy ra thông qua ngôn ngữ mã hóa của Google. Các khả năng hầu như vô tận. Tuy nhiên, nếu bạn không có nền tảng kỹ thuật, các ví dụ mã có thể trông khó khăn và bạn có thể tự nghĩ rằng năng suất thu được từ việc học Google Apps Script có thể không đủ để vượt quá mức đầu tư đáng kể về thời gian cần thiết để tìm hiểu nó.

Tất nhiên, điều này phụ thuộc vào nhiều yếu tố, bao gồm loại vai trò mà bạn có hoặc mong đợi sẽ có trong tương lai. Nhưng ngay cả khi bạn không mong đợi làm bất cứ điều gì tương tự như các ví dụ được hiển thị ở đây, việc hiểu rõ những gì có thể và khoảng bao nhiêu công việc cần thực hiện có thể kích hoạt những suy nghĩ và ý tưởng về cách cải thiện năng suất trong công ty của bạn, vì khách hàng của bạn hoặc cá nhân bạn.

Cá nhân tôi có thể chứng thực sự hài lòng khi ngồi lại và nhấn một nút để hoàn thành công việc thủ công tẻ nhạt trong một giờ đồng hồ trong vòng chưa đầy một phút. Sau khi làm điều này lần thứ 50, bạn sẽ cảm thấy biết ơn vì đã dành vài giờ đồng hồ cùng nhau luyện tập ngay từ đầu, điều này cuối cùng đã giúp bạn giải phóng thời gian của mình để theo đuổi nhiều giá trị gia tăng hơn. Sau một thời gian, những lợi ích về khả năng mở rộng này trở nên gây nghiện.


Tài chính doanh nghiệp
  1. Kế toán
  2. Chiến lược kinh doanh
  3. Việc kinh doanh
  4. Quản trị quan hệ khách hàng
  5. tài chính
  6. Quản lý chứng khoán
  7. Tài chính cá nhân
  8. đầu tư
  9. Tài chính doanh nghiệp
  10. ngân sách
  11. Tiết kiệm
  12. bảo hiểm
  13. món nợ
  14. về hưu