스프레드시트의 내용을 변경하면 구글 폼에 실시간으로 연동되는 프로그램(스크립트 코드) 작성

Поделиться
HTML-код
  • Опубликовано: 20 дек 2024

Комментарии • 15

  • @냐하하냐하냐하
    @냐하하냐하냐하 Год назад +1

    안녕하세요 아래 질문에 답변하신 소스를 시트에 넣고 트리거도 적용했는데 연동이 되지 않습니다 ㅠㅠ 혹시 시트나 폼, 스프레드 시트 등에 따로 지정해야 하는 이름이 있다거나 하는 변수가 있을까요? 🥲

    • @jingiru
      @jingiru  Год назад

      안녕하세요~ 구글폼 고유아이디를 바꾸셨을까요??

    • @냐하하냐하냐하
      @냐하하냐하냐하 Год назад

      @@jingiru 넵 ㅠㅠ 수정에서 보이는 d와 edit 사이의 아이디로 변경하여 적용하였습니다

    • @냐하하냐하냐하
      @냐하하냐하냐하 Год назад

      테스트를 위해 직접 실행을 눌러보기도 했는데요 실행로그엔 실행이 완료되었다고 뜨는데 설문폼은 변경되지 않습니다...
      ss.getSheetByName("시트이름");
      const GOOGLE_FORM_ID = "폼 고유아이디";
      이 두 부분 외 수정해야 할 항목이 있을까요?

  • @쭈진이
    @쭈진이 Год назад +1

    동일한 설문지 10개가 있는데
    질문을 자동으로 수정할수 있을까요

    • @jingiru
      @jingiru  Год назад

      음~ 구체적으로 어떤 상황인 것일까요?
      만약, 설문지 파일을 10개 만든 상황이시라면 그에 따라 스프레드시트도 10개 만들어주셔야 할 것 같아요~

  • @sarahrah3660
    @sarahrah3660 2 года назад

    응답 600개를 받은 이후 구글 폼에서 를 눌러 스프레드시트로 넘어간 경우, 여기에서 응답 중 40개를 삭제하면 나머지 560개의 응답을 바탕으로 구글 폼에서 그래프화 되어 결과나 나타나나요?

    • @jingiru
      @jingiru  2 года назад

      응답 스프레드시트에서 삭제된 데이터는 구글 폼에 반영되지 않습니다
      반대로 폼에서 삭제할 경우 응답 스프레드시트에 데이터는 삭제되구요!

  • @joontaenoh9000
    @joontaenoh9000 Год назад +1

    안녕하세요. 혹시 이 소스를 공유 받을 수 있을까요?

    • @jingiru
      @jingiru  Год назад +1

      function getDataFromGoogleSheets() {
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const sheet = ss.getSheetByName("sync");
      const [header, ...data] = sheet.getDataRange().getDisplayValues();
      const choices = {}
      header.forEach(function(title, index) {
      choices[title] = data.map(row => row[index]).filter(e => e !== "");
      });
      return choices;
      }
      function populateGoogleForms() {
      const GOOGLE_FORM_ID = "구글폼 고유 아이디";
      const googleForm = FormApp.openById(GOOGLE_FORM_ID);
      const items = googleForm.getItems();
      const choices = getDataFromGoogleSheets();
      items.forEach(function(item) {
      const itemTitle = item.getTitle();
      if (itemTitle in choices) {
      const itemType = item.getType();
      switch (itemType) {
      case FormApp.ItemType.CHECKBOX:
      item.asCheckboxItem().setChoiceValues(choices[itemTitle]);
      break;
      case FormApp.ItemType.MULTIPLE_CHOICE:
      item.asMultipleChoiceItem().setChoiceValues(choices[itemTitle]);
      break;
      default:
      Logger.log("Ignore question", itemTitle);
      }
      }
      });
      }

    • @jingiru
      @jingiru  Год назад +1

      코드가 보이실까요?
      응답 시트에서 App Script를 열어서 code.gs에 해당 코드를 입력하고,
      실행 함수를 getDataFromGoogleSheets()로 잡으시면 됩니다.
      트리거의 경우 저는 스프레드시트에서 - 변경 시, 스프레드시트에서 - 양식 제출 시 둘다 잡았습니다.

    • @joontaenoh9000
      @joontaenoh9000 Год назад

      @@jingiru 감사합니다. 한번 해볼께요 ^^ 시험문제 만드는데 상당히 도움이 될 것 같습니다 ㅎㅎ

    • @joontaenoh9000
      @joontaenoh9000 Год назад +1

      const GOOGLE_FORM_ID = "17q16e7fPtmNIui9sag7wZXzFh14OBvBrKWogNYMgVz8";
      관련 질문이 있습니다.
      여기서 "17~"로 시작하는 부분은 본인의 구글 아이디를 작성하는걸까요?
      제가 보내주신 코드로도 해보고, 저 부분을 제 구글 아이디로도 변경해서 저장하고, 트리거를 추가하는데요.
      계속 해당 계정의 안전성 문제로 할 수 없다고 메세지가 나와서요...

    • @jingiru
      @jingiru  Год назад

      @@joontaenoh9000 아~~ 네 경황이 없어서 그 부분 빠뜨렸네요!
      구글 폼을 생성하면 나오는 주소에서 d/ 와 /edit 사이에 있는 구글폼 고유 아이디를 넣어 주시면 됩니다!