구글 응용 프로그램 스크립트 무료 자동화 회사의 절차를 어떻게 사용합니까

우리 작업실과 우리 자신의 일부 제품에서 사용하는 도구와 서비스 집합에서 구글 응용 프로그램 스크립트는 우리가 가장 좋아하는 것 중의 하나이다.이 도구는 구글 서비스(예를 들어 구글 워크시트, 문서, 하드디스크 등)와 상호작용을 통해 반복 작업과 절차를 무료로 자동화할 수 있도록 한다.

구글 응용 스크립트 입문


첫 번째 스크립트를 만들려면 Google Apps Script page에 액세스할 수 있습니다.이것은 이 도구의 홈 페이지입니다. 생성된 모든 스크립트, 실행 로그, 관련 트리거를 볼 수 있습니다.

Google 도구에서 스크립트를 직접 만들 수 있습니다. 스크립트를 연결하고 싶습니다. 워크시트라면 도구를 클릭해서 실현할 수 있습니다.→ 스크립트 편집기.

이것은 클라우드에서 개발 환경을 열어 스크립트 코드를 직접 작성하고 실행할 수 있습니다.

이제 스크립트를 만드는 방법을 알았습니다. 두 가지 예시를 통해 기본 기능을 배울 것입니다. 이 기능들은 자동 프로세스를 만드는 것을 허용합니다.

Billbot에서 통화 스크립트 업데이트


우리가 소개하고자 하는 첫 번째 예는 Studio에서 만든 Billbot app 에서 사용한 화폐 목록을 가져오고 포맷하는 스크립트입니다.
먼저 스크립트에서 API로 요청을 보내는 방법을 해결해야 합니다.이를 위해 클래스UrlFetchApp를 사용할 필요가 있습니다. 이것은 AppScripts가 가지고 있는 가장 유용한 방법 중 하나입니다.
우리의 예에서 API가 되돌아오는 데이터 구조를 고려하면 우리는 하나의 요청을 해야 할 뿐만 아니라 여러 개의 요청을 해야 한다.이를 위해, 우리는 fetchAll 방법을 사용할 것입니다. 이 방법은 우리가 여러 개의 요청을 동시에 보낼 수 있도록 합니다.
다음은 코드의 모양입니다.
function myFunction() {
  var API = 'API_URL';
  var EUR = API + '&base=EUR';
  var USD = API + '&base=USD';
  var GBP = API + '&base=GBP';
  var CAD = API + '&base=CAD';
  var AUD = API + '&base=AUD';
  var CHF = API + '&base=CHF';
  var MXN = API + '&base=MXN';
  var RUB = API + '&base=RUB';
  var INR = API + '&base=INR';
  var BRL = API + '&base=BRL';
  var DKK = API + '&base=DKK';
  var SEK = API + '&base=SEK';
  var NOK = API + '&base=NOK';
  var HRK = API + '&base=HRK';
  var NZD = API + '&base=NZD';
  var CZK = API + '&base=CZK';
  var JPY = API + '&base=JPY';
  var PLN = API + '&base=PLN';
  var RON = API + '&base=RON';
  var THB = API + '&base=THB';
  var AED = API + '&base=AED';
  var HKD = API + '&base=HKD';
  var HUF = API + '&base=HUF';
  var ILS = API + '&base=ILS';
  var SGD = API + '&base=SGD';
  var TRY = API + '&base=TRY';
  var ZAR = API + '&base=ZAR';
  var SAR = API + '&base=SAR';
  var BGN = API + '&base=BGN';
  var QAR = API + '&base=QAR';
  var ISK = API + '&base=ISK';
  var MAD = API + '&base=MAD';
  var RSD = API + '&base=RSD';
  var ARS = API + '&base=ARS';
  var BHD = API + '&base=BHD';
  var BOB = API + '&base=BOB';
  var CLP = API + '&base=CLP';
  var CNY = API + '&base=CNY';
  var COP = API + '&base=COP';
  var EGP = API + '&base=EGP';
  var IDR = API + '&base=IDR';
  var KRW = API + '&base=KRW';
  var PEN = API + '&base=PEN';
  var PHP = API + '&base=PHP';
  var UAH = API + '&base=UAH';
  var UYU = API + '&base=UYU';
  var GTQ = API + '&base=GTQ';
  var PYG = API + '&base=PYG';

  var response = UrlFetchApp.fetchAll([
    EUR,
    USD,
    GBP,
    CAD,
    AUD,
    CHF,
    MXN,
    RUB,
    INR,
    BRL,
    DKK,
    SEK,
    NOK,
    HRK,
    NZD,
    CZK,
    JPY,
    PLN,
    RON,
    THB,
    AED,
    HKD,
    HUF,
    ILS,
    SGD,
    TRY,
    ZAR,
    SAR,
    BGN,
    QAR,
    ISK,
    MAD,
    RSD,
    ARS,
    BHD,
    BOB,
    CLP,
    CNY,
    COP,
    EGP,
    IDR,
    KRW,
    PEN,
    PHP,
    UAH,
    UYU,
    GTQ,
    PYG,
  ]);

    Logger.log(response);
}
요청한 결과를 보기 위해서 Logger.log를 사용할 수 있습니다.이는 JavaScriptconsole.log에 해당하지만 응용 프로그램 스크립트 디버거에서 결과를 볼 수 있습니다.기록을 보려면 키보드의 ctrl + Enter 키를 누르고 Mac에 있으면 cmd 키를 누르십시오.

일단 우리가 데이터를 얻게 되면, 다음 단계는 우리가 원하는 형식에 따라 그것을 포맷하는 것이다.이를 위해 JavaScript reduce를 간단하게 사용하고 그 결과를 문자열로 변환합니다.
var data = response.reduce(function (previous, current) {
    var currentJson = JSON.parse(current);
    var currencyData = currentJson.rates;
    var currency = currentJson.base;
    var currencyDataWithBase = { ...currencyData, [currency]: 1 };

    return { ...previous, [currency]: currencyDataWithBase };
}, {});

var dataParsed = JSON.stringify(data)
데이터를 포맷한 후, 우리는 그것을 전자 표에 저장해야 한다.이것은 SpreadSheetApp류로 완성할 수 있다.이 클래스의 기본 방법은 getActive() 이다. 스크립트와 관련된 파일을 인용할 수 있고, getSheetByName() 관련 파일의 특정 페이지를 인용할 수 있다.
일단 우리가 변수에 작업표의 인용이 있으면, 우리는 그것을 사용하여 줄과 열의 데이터를 읽고 저장할 수 있다.getRangesetValue 방법을 사용하면 칸에 쓸 수 있고 getValue 방법을 사용하면 그 값을 얻을 수 있습니다.
우리는 전자 표의 네 줄 코드에 이 모든 데이터를 저장할 수 있다.
var ratesSpreadSheet = SpreadsheetApp.getActive();
var dbSheet = ratesSpreadSheet.getSheetByName('db');

dbSheet.getRange(1, 1).setValue(dataParsed);
SpreadsheetApp.flush();
스크립트를 실행한 후, 우리는 전자 표의 칸 1, 1에서 출력을 찾을 것이다.API에서 얻은 데이터로 가득 차 있고 필요에 따라 포맷되어 있음을 알 수 있습니다.

방금 본 Logger, SpreadSheetApp, UrlFetchApp 클래스를 사용해야만 자바스크립트 지식과 창조력을 갖춘 강력한 스크립트를 만들 수 있습니다.다음 예는 바로 뚜렷한 예이다. 이 세 가지 API를 사용함으로써 우리는 초창기 회사를 위해 자동 영수증을 만드는 시스템을 구축했다.

Cravy Partners Chargeback 시스템


Cravy에서 우리는 매주 우리 플랫폼의 합작 파트너 식당에 영수증을 발급해야 한다.처음에, 우리는 구글 전자 표를 사용하여 수동으로 그것들을 만들고, 이를 pdf 형식으로 바꾸기 시작했다.우리가 10여 개의 식당을 가지고 있을 때, 이 과정은 상당히 지루해서, 아마도 하루 종일 일을 해야 할 것이다.
식당마다 두 개의 서류가 있다. 하나는 저희 서비스 커미션에 관한 영수증이고, 하나는 커미션과 관련된 모든 주문서에 대한 영수증이다.


청구서 템플릿이 이미 있고 데이터베이스와 프로젝트 백엔드를 완벽하게 제어하고 있다는 사실에 따라 다음과 같은 작업을 수행하는 애플리케이션 스크립트를 만들기로 결정했습니다.
  • 문서를 조직적으로 Google Drive에 저장할 현재 날짜가 있는 폴더를 만듭니다.
  • 백엔드에 요청을 하여 각 식당의 주문 정보를 얻는다.
  • 식당마다 구글 폼 템플릿 사본을 만들고 API에서 얻은 정보로 채운다.
  • 작성된 복사본을 해당 폴더에 저장하고 파일의 PDF 버전을 만듭니다.
  • 본 문서에서 API가 제공하는 가장 재미있는 옵션을 중점적으로 보여 드리겠습니다. 스크립트 자체의 논리를 상세하게 소개하지는 않지만, 전체 스크립트를 보고 싶으시다면 it can be found on Github.

    Google Drive에서 폴더 만들기


    아직 보지 못한 클래스 중 하나는 DriveApp 이며, Google 드라이브 폴더와 파일에 대한 작업을 수행할 수 있습니다.
    이 예에서는 특정 Google Drive 폴더에 날짜 이름의 새 폴더를 만들고자 합니다.
      const now = new Date();
      const billDay = new Date(now.setDate(now.getDate() + 1))
        .toISOString()
        .slice(0, 10);
    
    // Creating the day folder to save the bills
      const folderId = DriveApp.getFolderById('FOLDER-ID')
        .createFolder(billDay)
        .getId();
    
    그림에서 보듯이, 우리가 폴더에 있을 때 url slug의 끝에서 폴더 ID를 찾을 수 있습니다.

    식당마다 구글 폼 템플릿 만들기


    모든 식당을 위해 전자 표를 만들기 위해 우리가 해야 할 일은 우리가 가지고 있는 모든 식당을 위해 이 기능을 수행하는 것이다.우리는 간단한 것을 통과할 수 있다.
    for (var index = 0; index < restaurantsData.length; index++) {
        fillSheetWithBillingData(
          restaurantsData[index],
          billDay,
          firstDay,
          lastDay,
          folderId
        );
      }
    
    함수를 실행하면 UrlFetchApp 클래스를 사용하여 백엔드에서 식당 정보를 요청합니다. 빌봇 예시에서 보듯이 자바스크립트로 필요한 형식의 데이터를 얻기 위해 자바스크립트를 사용합니다.
    일단 우리가 이러한 데이터를 가지게 되면, 우리는 아래의 코드 줄을 사용하여 새로운 전자 표를 만들기 시작할 것이다.
    //Setting the reference to the original sheets
    var billSheet = originalSpreadsheet.getSheetByName('Bill');
    var ordersBillSheet = originalSpreadsheet.getSheetByName('OrdersBill');
    
    //Create new restaurant sheet
    var newBillSheet = SpreadsheetApp.create(
          'Factura-' + restaurantName + '-' + billDay + ''
        );
    var newOrdersBillSheet = SpreadsheetApp.create(
          'Annnexo-' + restaurantName + '-' + billDay + ''
        );
    
    //Copy the parent sheet content to the new created sheets
    billSheet.copyTo(newBillSheet);
    ordersBillSheet.copyTo(newOrdersBillSheet);
    
    create()copyTo() 함수를 사용하여 우리는 두 개의 새로운 빈 전자 표를 만들고 템플릿으로 사용할 전자 표의 내용을 복사했다.이 파일은 Google Drive의 루트 폴더에 생성되므로 마지막 단계에서 해당 폴더로 이동하여 루트 폴더에서 삭제해야 합니다.
    스크립트의 다음 단계는 우리가 이전 예시에서 보았던 SpreadsheetApp 종류getRange()setValue() 방법으로 API에서 얻은 정보를 사용하여 우리가 방금 만든 전자 표를 채우는 것이다.

    작성된 복사본을 해당 폴더에 저장하고 파일의 PDF 버전을 작성합니다.


    마지막으로 마지막으로 작성된 두 개의 스프레드시트를 저장하고 PDF 형식으로 내보냅니다.이 점을 하려면 우리는 작은 함수 하나만 필요하다.
    function exportSomeSheets(
      restaurantName,
      folderId,
      newBillSheet,
      newOrdersBillSheet
    ) {
      // Save the files in to the correspondent folder
      var folder = DriveApp.getFolderById(folderId).createFolder(restaurantName);
      var copyNewBillSheet = DriveApp.getFileById(newBillSheet.getId());
      var copyNewOrdersBillSheet = DriveApp.getFileById(newOrdersBillSheet.getId());
    
      folder.addFile(copyNewBillSheet);
      folder.addFile(copyNewOrdersBillSheet);
      folder.createFile(copyNewBillSheet);
      folder.createFile(copyNewOrdersBillSheet);
    
      DriveApp.getRootFolder().removeFile(copyNewBillSheet);
      DriveApp.getRootFolder().removeFile(copyNewOrdersBillSheet);
    }
    
    이 함수는 다음과 같은 절차를 수행합니다. 먼저 이전 단계에서 생성된 날짜 폴더에 식당 이름을 포함하는 폴더를 만듭니다.

    그리고 addFile() 기능을 사용하여 두 번째 단계의 전자 표를 식당 이름이 있는 폴더에 붙여넣습니다.마지막으로, 이것은 createFile() 함수를 사용하여 pdf 버전을 만듭니다.
    마지막으로, 우리는 루트 폴더에서 이 파일들을 삭제하여 그것들의 누적을 피했다.

    결론


    보시다시피, 프로그램 스크립트와 창의력을 통해 우리는 회사에서 일상적인 업무를 돕고, 월말에 수백 시간을 절약할 수 있는 강력한 일을 할 수 있습니다.이것들은 단지 우리가 일부 조작 부분을 자동화하기 위해 실현한 몇 가지 예일 뿐이지만, 같은 방법도 더욱 많은 상황에 응용될 수 있다.
    또한 AppScript를 사용하는 또 다른 장점은 플랫폼의 제한 아래 완전한 무료 서비스이기 때문에 우리는cron 작업과 다른 자동 절차를 무료로 얻을 수 있다는 것이다.

    좋은 웹페이지 즐겨찾기