【GAS】셀의 조작(값 입력편)(Spreadsheet)

0. 소개



이 기사에서는 GAS에서 스프레드 시트의 셀 조작에서 셀에 값을 입력 (세트)하는 방법을 기록합니다.

1. 특정 셀(단체)에 값을 입력합니다.
2. 특정 셀(단체)의 값을 삭제(공백을 입력)한다.
3.sheet 내의 모든 셀을 삭제한다.
4. 특정 범위의 셀에 동일한 값을 입력합니다.
5. 값이 있는 단일 셀에서 값을 복사하여 특정 셀에 입력합니다.
6. 값이 있는 여러 셀을 모두 복사하여 특정 범위의 셀에 입력합니다.

Method


//----単体セルに値を入力----//
rangeObject.setValue("")
//rangeObjectに格納されているセルに値が入力される。

//----単体セルの値を削除----//
rangeObject.clear();
//単体セルの値を削除するメソッド

//----全てのセルの値を削除----//
dataobject.clear();
//dataobjectに入っている値を全て削除。


1. 특정 셀(단체)에 값을 입력합니다.



아래 D5 셀은 지금 비어 있습니다. D5에 숫자의 1을 GAS로부터 입력(세트) 해 본다.

function myFunction() {
  var ss1 = SpreadsheetApp.openById("SpreadSheet-key");
  //spreadsheetをss1に格納。 

  var sh1 = ss1.getSheetByName("sheet1");
  //特定のシート(sheet1)をsh1に格納

  var sell1 = sh1.getRange('D5');
  //sell1にD5を格納

  sell1.setValue(1);
  //sell5(D5)に1をセット

  Logger.log(sell5.getValue());  


결과



로그 결과

시트의 D5에도 확실히 1이 세트되어 있다.


【번외편】이미 값이 들어 있어 다른 값을 세트 하면 어떻게 되는 것인가?



이것은 데이터베이스와 동일한 사고 방식으로 "업데이트"됩니다.
D5에 1이 들어있는 상태에서 2를 GAS에서 설정하면 D5의 값은 2가 된다.

2. 특정 셀(단체)의 값을 삭제(공백을 입력)한다.



특정 셀의 값을 삭제하는 방법에는 두 가지가 있습니다. 결과는 아무것도 같은 결과가 된다.

2-1.setValues를 사용하여 삭제합니다.


rangeObject.setValues('');

2-2.clear를 사용하여 삭제합니다.


rangeObject.clear();

3. 특정 Sheet의 모든 셀 값을 삭제합니다.



시트에 다음과 같이 값이 입력됩니다.
이하의 값을 모두 삭제한다.

이를 위해서는 data 메소드를 사용하여 clear를 하면 된다.

function myFunction() {
  var ss1 = SpreadsheetApp.openById("Spreadsheet-key");
  //spreadsheetをss1に格納
  var sh1 = ss1.getSheetByName("sheet1");
  //sheet1をsh1に格納

  var data1 = sh1.getDataRange();
  //sh1の値をdataとしてdata1に格納
  data1.clear();
  //data1の値をクリア

결과



스크립트를 실행하면 아래와 같이 모든 값이 삭제됩니다.


4. 특정 범위의 셀에 동일한 값을 입력합니다.



지정된 범위의 셀을 삭제하려면 rangeObject를 지정하여 셀의 범위를 지정하면 됩니다.
예를 들면, 이하와 같이 값이 들어가 있고, D1~D5의 값을 삭제하고 싶다고 한다.


다음과 같이 getRange("D1:D5")로 지정한다.

  var ss1 = SpreadsheetApp.openById("SpreadSheet-key");
  //spreadsheetをss1に格納。 

  var sh1 = ss1.getSheetByName("sheet1");
  //特定のシート(sheet1)をsh1に格納

  var range1 = sh1.getRange("D1:D5");
  //range1にD1~D5の値を格納。
  range1.clear();

결과





5. 단위 셀에서 값을 복사하여 다른 셀로 설정합니다.



이것은 분해하면 알기 쉽다. 절차를 다음과 같이 하면 된다.
1. 특정 셀의 값을 얻고 x에 저장
2. 입력하고 싶은 셀을 getrange로 취득해 y에 저장.
3.setValue에서 y에 x를 설정합니다.

다음과 같이 A열에는 숫자의 값이 들어 있다. A1의 1을 C1에 복사하는 것을 시도한다.


  var ss1 = SpreadsheetApp.openById("SpreadSheet-key");
  //spreadsheetをss1に格納。 

  var sh1 = ss1.getSheetByName("sheet1");
  //特定のシート(sheet1)をsh1に格納

  var range1 = sh1.getRange("A1");
  //指定するセルを取得

  var values = range1.getValue();
  //range1の値を取得

  var range2 = sh1.getRange("C1");
  //コピー先のセルを取得

  range2.setValue(values);
  //コピー先にrange1の値をセット


결과



다음과 같이 A1의 값을 C1로 설정하였다.



6. 특정 범위의 셀 값을 복사하여 다른 범위의 셀에 입력합니다.



A 열에 다음 값이 설정되어 있다고 가정합니다. 이것을 C의 열에 복사합니다.


수법은 몇 가지 있지만, 여기에서는 for문을 사용해 본다.
for문을 사용해 값을 취득해, 세트 하는 동작을 10회 반복한다.

function myFunction() {

  var ss1 = SpreadsheetApp.openById("SpreadSheet-key");
  //spreadsheetをss1に格納。 

  var sh1 = ss1.getSheetByName("sheet1");
  //特定のシート(sheet1)をsh1に格納

  for(var i = 1;i <= 10;i++)
  {
   var range1 = sh1.getRange(i,1); 
   //A列を1からrange1に格納。
   var values = range1.getValue();
   //range1のセルの値をvaluesに格納。
   var range2 = sh1.getRange(i,3);
   //C列を1からrange2に格納。
   range2.setValue(values);
   //range2にvaluesの値をセット。
  }

결과





요약



범위의 값을 배열로 취급할지, for문을 이용해 하나하나 처리를 해 나갈지는, 용도에 따라 나누면 좋을까 생각합니다.
방대한 데이터를 취급하는 경우는 datarange에서 Sheet의 값을 일괄로 취득해, 배열로 취급하는 것이 빠를까라고.
실제로 스크립트가 움직여 주면 정말 기쁩니다.

빨리 GMail이나 캘린더의 조작도 자유자재가 되고 싶다·····

이상입니다.

좋은 웹페이지 즐겨찾기