달나라 노트

Google Apps Script : 함수, function, 함수 import, 상수 import 본문

Google Apps Script

Google Apps Script : 함수, function, 함수 import, 상수 import

CosmosProject 2022. 11. 22. 21:08
728x90
반응형

 

 

 

Google Apps Script에서도 함수를 선언하고 사용할 수 있습니다.

 

그 방법에 대해 알아봅시다.

 

 

 

function function_name(parameter1, parameter2, ...) {
  function_contents
  
  return ~~
}

 

함수는 function이란 키워드로 시작합니다.

 

그리고 함수의 이름인 function_name을 적어줍니다. 원하는대로 적으면 됩니다.

 

또한 괄호 안에는 함수를 호출할 때 받을 parameter를 명시합니다.

parameter는 콤마로 구분하며 원하는 개수 만큼 넣을 수 있습니다.

 

중괄호{} 안에는 원하는 함수의 기능을 작성하면 됩니다.

 

만약 함수가 실행되고 나서 어떠한 값을 반환하게 하고 싶다면 return 키워드를 사용하면 됩니다.

(만약 함수에서 반환할 값이 필요없다면 return 키워드를 적지 않아도 됩니다.)

 

 

 

 

 

 

 

 

 

function custom_sum(a, b) {
  var result = a + b;

  return result;
}

function myFunction() {
  var sum_result = custom_sum(10, 12);
  Logger.log(sum_result);
}


-- Result
22.0

 

위 예시는 custom_sum이라는 함수를 생성하고 그것을 실제 사용한 예시입니다.

 

custom_sum 함수를 보면 a, b 2개의 parameter를 받고

a + b의 결과를 return해주는 기능을 가지고 있습니다.

 

그리고 myFunction()을 보면 custom_sum을 호출하고있죠.

custom_sum(10, 12) 이렇게 함수를 호출하는데 parameter가 2개 적혀있습니다.

따라서 a = 10, b = 12 이렇게 대응되어 custom_sum 함수가 호출되는 것이죠.

 

그래서 결과를 보면 22가 잘 출력되는 것을 알 수 있습니다.

 

 

 

 

 

 

 

function custom_sum(a, b) {
  var result = a + b;

  return result;
}

function myFunction() {
  var sum_result = custom_sum(10, 12, 14, 16);
  Logger.log(sum_result);
}



-- Result
22.0

 

custom_sum 함수는 a, b 2개의 인자를 받습니다.

근데 위 예시에서는 custom_sum 함수 호출 시 10, 12, 14, 16 총 4개의 인자를 전달했습니다.

 

이렇게 함수가 받는 인자보다 더 많은 개수의 parameter를 전달하여 호출할 경우 초과되는 parameter는 그냥 버려집니다.

없는 셈 쳐진다는 것이죠.

 

따라서 a = 10, b = 12로 지정되어 결과가 22로 출력된 것을 볼 수 있습니다.

 

 

 

 

 

 

 

function custom_sum(a=1, b=1) {
  var result = a + b;

  return result;
}

function myFunction() {
  var sum_result = custom_sum();
  Logger.log(sum_result);
}


-- Result
2.0

 

 

custom_sum 함수는 a, b 2개의 parameter를 받는데 custom_sum 함수 호출시에는 아무 인자도 전달하지 않았습니다.

근데도 결과가 2라고 출력되고 있습니다.

 

그 이유는 바로 parameter의 기본값을 설정했기 때문입니다.

 

 

- function custom_sum(a=1, b=1) {

함수 생성 부분을 보면 위처럼 적혀있습니다.

a, b parameter가 단순히 a, b만 적혀있는 것이 아니라 a=1, b=1이라고 적혀있죠.

 

이것은 paramter의 기본값을 설정하는 기능입니다.

기본값은 설정하지 않아도 되며 설정할 경우 원하는 parameter에만 기본값을 설정할 수도 있습니다.

 

저는 a, b paramter 모두에 기본값을 1로 설정하였고,

기본값은 custom_sum 함수가 호출될 때 할당되지 않은 parameter가 존재한다면 해당 parameter는 설정된 기본값을 할당받은 채로 함수가 실행됩니다.

 

 

 

 

function custom_sum(a, b) {
  var result = a + b;

  return result;
}

function myFunction() {
  var sum_result = custom_sum();
  Logger.log(sum_result);
}


-- Result
NaN

 

만약 위처럼 custom_sum 함수 선언 시 paramter에 기본값을 입력하지 않은 상태에서

custom_sum() 함수 선언 시 parameter를 전달하지 않았다면

a, b는 undefined가 되어 a + b의 결과도 NaN이라는 결과가 출력되게 되는 것입니다.

 

 

 

 

 

자 여기서 한가지 Google Apps Script의 기능을 짚고 넘어갑시다.

 

function custom_sum(a, b) {
  var result = a + b;

  return result;
}

function myFunction() {
  var sum_result = custom_sum(10, 12);
  Logger.log(sum_result);
}


-- Result
22

 

여기서 함수만 2개가 있는데 대체 어떻게 myFunction()이라는 함수가 실행된걸까요?

 

 

Google Apps Script Editor 화면을 보면 위 이미지에서처럼 빨간색으로 표시된 부분에 실행할 함수를 설정하는 부분이 있습니다.

이것은 기본적으로 생성되는 함수인 myFunction으로 설정되어있습니다.

그래서 지금까지 코드 실행 시 myFunction()이 실행된 것임을 알 수 있습니다.

 

이 부분을 눌러보면 현재 코드에 존재하는 함수의 리스트가 나오며 실행할 함수를 설정할 수 있습니다.

 

위 함수를 custom_sum으로 클릭하고 코드를 실행하면 아무 결과가 나오지 않습니다.

왜냐면 custom_sum은 따로 에러를 발생시키지 않지만 반대로 어떠한 결과를 출력해주지도 않기 때문이죠.

 

이렇게 실행시킬 함수를 지정할 수 있다는 것도 참고하면 좋습니다.

 

 

 

 

 

 

 

 

 

 

Python에서는 다른 python 파일에 적힌 함수를 import하여 사용할 수 있습니다.

이 얘기를 하는 이유는 Google Apps Script에서도 비슷한 것이 가능하기 때문입니다.

 

Google Apps Script에서는 동일한 프로젝트에 있는 다른 google script 파일(.gs)에 있는 함수까지 모두 호출해올 수 있습니다.

 

 

 

 

현재 저는 프로젝트에 2개의 파일이 있습니다.

Code.gs

func_collections.gs

 

여기서 Code.gs는 myFunction이 있는 파일이며 main 함수의 코드를 담은 파일입니다.

 

func_collections.gs 파일에는 직접적으로 실행되진 않지만 Code.gs에서 호출하여 사용할 custom 함수들을 모아둔 파일입니다.

 

 

 

func_collection.gs 파일을 보면 위처럼 custom_sum 함수가 적혀있습니다.

 

 

 

 

 

다시 Code.gs 파일로 돌아와서

Code.gs에 적힌 코드를 보면 위와 같습니다.

보면 custom_sum(10, 12) 이렇게 custom_sum 함수를 시행시키고 있습니다.

 

근데 Code.gs 파일에는 custom_sum이라는 함수가 정의되어있지 않아요.

근데 custom_sum 함수를 Code.gs 파일에서 실행할 수 있었던 이유는 같은 프로젝트에 있는 func_collection.gs 파일에 custom_sum 함수가 정의되어있기 때문입니다.

 

이렇게 Google Apps Script는 같은 프로젝트에 있는 모든 .gs 파일의 내용을 공유하며 각각의 파일에 정의된 모든 함수도 기본적으로 공유합니다.

 

따라서 별도의 import 구문 없이 바로 동일 프로젝트 내의 다른 .gs 파일에 있는 함수들을 가져와서 사용할 수 있는 것이죠.

 

 

 

 

이러한 다른 파일로부터의 함수 import는 상수 import로도 확장할 수 있습니다.

 

 

위처럼 Code.gs 파일에 코드를 적었습니다.

 

weight, height이라는 값을 출력하라는 코드인데

어딜봐도 wieght, height이라는 변수는 정의되지 않았습니다.

 

근데 위 코드를 실행해보면 이처럼 100, 250이라는 값이 출력됩니다.

 

왜일까요?

 

func_collections.gs 파일을 봅시다.

func_collections.gs 파일을 보면 어떤 함수에 속하지 않은 가장 바깥에 weight, height 변수가 각각 100, 250으로 설정되어 있습니다.

 

이렇게 동일 프로젝트 내에서는 함수 뿐 아니라 일반 변수들도 .gs 파일끼리 모두 공유하게되며 별도의 import 구문 없이 자유롭게 사용할 수 있습니다.

 

 

 

 

 

 

728x90
반응형
Comments