GCP/Apps Script

Apps Script로 Google Forms의 Dropdown 항목을 Google Sheets에서 가져온 데이터로 생성하기

whistory 2023. 6. 9. 10:38
반응형

 

 

Google Forms의 dropdown 항목을 생성해보았다.

 

 

Apps Script로 Google Forms 항목(item) 추가하기

Apps Script로 Google Sheets 를 위주로 글을 쓰다가, Google Forms에 대해서도 한번 써보려고한다. 제공되는 Form class docs를 기반으로 작성해본다. Class Form | Apps Script | Google for Developers 이 페이지는 Cloud Trans

whiseung.tistory.com

 

 

 

 

 

dropdown 항목들을 Google sheets에서 가져와 뿌려줄 수는 없을까?

 

 

 

Google Sheets 에서 가져온 데이터로 Google Froms에서 dropdown 생성하기

const ITEM_TITLE = '가장 좋아하는 동물은?';
const ITEM_DESC  = '가장 좋아하는 동물을 선택하세요';

function setDropdownItemFromGoogleSheet() {
    const SHEET_ID      = "GOOGLE_SHEET_ID";
    const SHEET_NAME    = "GOOGLE_SHEET_NAME";

    const sheet         = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME);
    const values        = sheet.getRange(`A1:A${sheet.getLastRow()}`).getValues().flat();

    const form = FormApp.getActiveForm();
    const item = form.addListItem();
    item.setTitle(ITEM_TITLE);
    item.setHelpText(ITEM_DESC);
    item.setChoiceValues(values);
    console.log(values);
}

 

 

 

Google Sheets 에서 가져온 데이터로 Google Froms에서 dropdown 수정(갱신)하기

Chicken 이라는 항목을 추가해본다.

 

원래는 item의 id를 기존으로 삭제를 하는방법을 사용해야 하나,

여기서는 item title 과 item type 을 기준으로 item id를 가져와 

dropdown 내용을 수정한다.

function setDropdownItemFromGoogleSheetRefresh() {
    const SHEET_ID      = "GOOGLE_SHEET_ID";
    const SHEET_NAME    = "GOOGLE_SHEET_NAME";

    const sheet         = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME);
    const values        = sheet.getRange(`A1:A${sheet.getLastRow()}`).getValues().flat();
    
    const form = FormApp.getActiveForm();
    const items = form.getItems();
    var itemId;
    for ( i in items ) {
        if ( items[i].getTitle() == ITEM_TITLE && tems[i].getType() == "LIST") {
            itemId = items[i].getId();
        }
    }
    var item = form.getItemById(itemId);
    item.asListItem().setChoiceValues(values);
    console.log(values);
}

 

 

 

form 에서 item을 가져와,

가져온 item 을 as~~~ 로 casting 하여 수정을 진행한다.

const form = FormApp.getActiveForm();
var item   = form.getItemById(itemId);
item.asListItem().setChoiceValues(values);

 

 

반응형