# doGet 등 Apps Script 함수

### doGet 함수

doGet 함수는 웹 앱의 GET 요청을 처리합니다. 이 함수를 사용하여 데이터를 조회하거나 표시할 수 있습니다.

```javascript
function doGet(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();

  return ContentService.createTextOutput(JSON.stringify(data))
    .setMimeType(ContentService.MimeType.JSON);
}
```

### doPost 함수

doPost 함수는 POST 요청을 처리합니다. 이 함수를 사용하여 데이터를 시트에 추가할 수 있습니다.

```javascript
function doPost(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = JSON.parse(e.postData.contents);
  
  sheet.appendRow([data.name, data.email, data.message]);
  
  return ContentService.createTextOutput("Data added successfully")
    .setMimeType(ContentService.MimeType.TEXT);
}
```

### API를 통해 데이터 가져오기

외부 API에서 데이터를 가져와 시트에 추가하는 함수입니다.

```javascript
function fetchDataFromApi() {
  var url = "https://api.example.com/data";
  var response = UrlFetchApp.fetch(url);
  var data = JSON.parse(response.getContentText());
  
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  data.forEach(function(item) {
    sheet.appendRow([item.id, item.name, item.value]);
  });
}
```

### 시트 데이터를 API로 전송하기

```javascript
function sendDataToApi() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  
  var url = "https://api.example.com/update";
  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(data)
  };
  
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response.getContentText());
}
```

### 주기적으로 API 호출하기

```javascript
function setupTrigger() {
  ScriptApp.newTrigger('updateDataPeriodically')
    .timeBased()
    .everyHours(1)
    .create();
}

function updateDataPeriodically() {
  var url = "https://api.example.com/data";
  var response = UrlFetchApp.fetch(url);
  var data = JSON.parse(response.getContentText());
  
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clear();
  sheet.appendRow(['ID', 'Name', 'Value']); // 헤더 추가
  
  data.forEach(function(item) {
    sheet.appendRow([item.id, item.name, item.value]);
  });
}
```

For the site tree, see the [root Markdown](https://slashpage.com/taesangeom.md).
