← 전체 코드 목록

📖 사용 방법

구글 스프레드시트에 입력된 링크들을 QR코드로 자동 생성하여 구글 드라이브에 저장하는 코드입니다.

이런 분께 추천해요

  • 여러 개의 링크를 한 번에 QR코드로 만들고 싶은 분
  • 반복적인 QR코드 생성 작업을 자동화하고 싶은 분
  • 행사 안내, 제품 정보, 웹사이트 링크 등 다양한 QR코드를 효율적으로 관리하고 싶은 분

완성하면 이렇게 됩니다

  • 구글 스프레드시트에 입력된 모든 링크가 각각의 QR코드 이미지 파일로 변환됩니다.
  • 생성된 QR코드 이미지 파일은 지정한 구글 드라이브 폴더에 자동으로 저장됩니다.
  • 스프레드시트에는 각 링크의 QR코드 생성 상태(완료, 에러 등)와 드라이브 파일 ID가 기록됩니다.

준비물

  • 구글 계정: 구글 스프레드시트와 구글 드라이브를 사용하기 위해 필요합니다.
  • 구글 스프레드시트: QR코드로 만들 링크 목록을 입력할 문서입니다.
  • 구글 드라이브: 생성된 QR코드 이미지를 저장할 공간입니다.

따라하기

1단계: 스프레드시트 준비하기

  1. 새 구글 스프레드시트 만들기: 구글 드라이브에서 새로 만들기 > Google 스프레드시트를 클릭하여 빈 시트를 만듭니다.
  2. 헤더(제목) 입력하기: 첫 번째 행(1행)에 다음 내용을 입력합니다.
    • A1 셀: link (QR코드로 만들 웹 주소)
    • B1 셀: filename (생성될 QR코드 파일 이름, 비워두면 자동으로 이름이 붙습니다)
    • C1 셀: status (QR코드 생성 상태)
    • D1 셀: fileId (구글 드라이브에 저장된 파일의 고유 ID)
  3. 링크와 파일 이름 넣기: 2행부터 A열에 QR코드로 만들 웹 주소(URL)를 입력합니다. B열에는 해당 QR코드의 파일 이름을 입력합니다. (예: A2에 https://www.google.com, B2에 구글_QR)

2단계: 구글 드라이브 폴더 만들기

  1. 새 폴더 생성: 구글 드라이브로 이동하여 새로 만들기 > 새 폴더를 클릭하고, QR코드를 저장할 폴더를 만듭니다. (예: 내 QR코드)
  2. 폴더 ID 복사: 만든 폴더 안으로 들어간 후, 웹 브라우저 주소창을 확인합니다. 주소창에 https://drive.google.com/drive/folders/ 뒤에 나오는 긴 문자열이 폴더 ID입니다. 이 문자열을 복사해 둡니다. (예: 1aBcDeFgHiJkLmNoPqRsTuVwXyZ)

3단계: 앱스 스크립트 설정 및 실행하기

  1. 앱스 스크립트 열기: 1단계에서 준비한 구글 스프레드시트로 돌아와서, 상단 메뉴에서 확장 프로그램 > Apps Script를 클릭합니다. 새 탭에 스크립트 편집기 창이 열립니다.
  2. 코드 붙여넣기: 스크립트 편집기 창에 기본으로 작성된 코드를 모두 지우고, [코드] 내용을 그대로 복사하여 붙여넣습니다.
  3. 설정 값 수정하기: 코드 상단 ***** 설정 ***** 부분에서 다음 두 줄을 수정합니다.
    • const SHEET_NAME = "시트 이름"; : 시트 이름 부분을 1단계에서 만든 스프레드시트의 시트 이름으로 바꿉니다. (기본값은 Sheet1 또는 시트1입니다.)
    • const FOLDER_ID = "구글 폴더 ID"; : 구글 폴더 ID 부분을 2단계에서 복사한 폴더 ID로 바꿉니다.
      (예시: const SHEET_NAME = "Sheet1";, const FOLDER_ID = "1aBcDeFgHiJkLmNoPqRsTuVwXyZ";)
  4. 스크립트 저장: 상단의 디스켓 모양 프로젝트 저장 아이콘을 클릭하여 스크립트를 저장합니다.
  5. 함수 선택 및 실행:
    • 스크립트 편집기 상단의 함수 선택 드롭다운 메뉴에서 generateQrToDrive를 선택합니다.
    • 옆에 있는 실행 버튼(재생 버튼 모양)을 클릭합니다.
  6. 권한 허용: 처음 실행할 때는 구글 서비스에 접근할 권한을 요청합니다.
    • 권한 검토 버튼을 클릭합니다.
    • 본인의 구글 계정을 선택합니다.
    • 이 앱은 Google에서 확인되지 않았습니다라는 경고가 나타나면, 왼쪽 아래 고급을 클릭한 후 (프로젝트 이름)으로 이동을 클릭합니다.
    • 마지막으로 허용 버튼을 클릭하여 스크립트 실행을 승인합니다.
  7. 실행 확인: 스크립트가 성공적으로 실행되면, 스프레드시트의 C열(status)에 완료가 표시되고 D열(fileId)에 파일 ID가 기록됩니다. 구글 드라이브 폴더에 QR코드 이미지 파일이 생성되었는지 확인해 보세요.

자주 막히는 부분

  • 권한 허용을 제대로 하지 않았어요: 스크립트가 구글 드라이브에 파일을 만들고 스프레드시트를 수정하려면 반드시 권한을 허용해야 합니다. 권한 검토 단계를 다시 확인해 주세요.
  • SHEET_NAME 또는 FOLDER_ID를 잘못 입력했어요: 시트 이름이나 폴더 ID에 오타가 없는지, 정확히 복사하여 붙여넣었는지 다시 확인해 주세요. 시트 이름은 대소문자도 구분합니다.
  • 스프레드시트에 링크가 없어요: A열에 QR코드로 만들 링크(URL)가 없거나, 2행부터 데이터가 없으면 스크립트가 실행되지 않습니다.
  • status 열에 URL없음 또는 에러가 표시돼요:
    • URL없음: A열에 링크가 비어있는 경우입니다.
    • 에러: 입력된 URL 형식이 잘못되었거나, QR 생성 API에 일시적인 문제가 발생했을 수 있습니다. URL이 유효한지 확인해 보세요.

이렇게도 써보세요 (응용)

  • 자동 실행 트리거 설정: 앱스 스크립트 편집기 왼쪽 메뉴에서 트리거 아이콘(시계 모양)을 클릭하여, 특정 시간마다 자동으로 스크립트가 실행되도록 설정할 수 있습니다. (예: 매일 밤 12시에 새로운 링크를 QR코드로 자동 생성)
  • 스프레드시트에 버튼 추가: 스프레드시트에 그림이나 도형을 삽입하고, 마우스 오른쪽 버튼을 눌러 스크립트 할당을 선택한 후 generateQrToDrive 함수 이름을 입력하면, 버튼 클릭 한 번으로 QR코드 생성을 시작할 수 있습니다.
  • 다양한 파일 이름 활용: B열(filename)에 제품명, 행사명, 고객 이름 등 다양한 정보를 입력하여 QR코드 파일 이름을 더 의미 있게 만들 수 있습니다.

한 줄 정리

구글 스프레드시트와 앱스 스크립트를 활용하면 복잡한 QR코드 생성 작업을 자동화하여 시간과 노력을 크게 절약할 수 있습니다.

💻 코드

Code.gs
    ```javascript
    /***** 설정 *****/
    const SHEET_NAME = "시트 이름"; // 시트 이름
    const FOLDER_ID  = "구글 폴더 ID"; // 드라이브 QR 저장 폴더 ID

    // 컬럼 위치 (1 = A열)
    const COL = {
      URL:    1, // A: link
      NAME:   2, // B: filename
      STATUS: 3, // C: status
      FILEID: 4  // D: fileId
    };

    // 사용할 QR 생성 API (무료)
    const QR_BASE_URL = "https://api.qrserver.com/v1/create-qr-code/?size=500x500&data=";


    /***** 메인 함수: 시트 → QR 생성 → 드라이브 저장 *****/
    function generateQrToDrive() {
      const ss    = SpreadsheetApp.getActive();
      const sheet = ss.getSheetByName(SHEET_NAME);
      const folder = DriveApp.getFolderById(FOLDER_ID);

      const lastRow = sheet.getLastRow();
      if (lastRow < 2) return; // 데이터 없음

      // 2행부터 마지막 행까지 읽기
      const range = sheet.getRange(2, 1, lastRow - 1, 4);
      const values = range.getValues();

      for (let i = 0; i < values.length; i++) {
        let row = values[i];
        let url      = row[COL.URL - 1];    // A
        let filename = row[COL.NAME - 1];   // B
        let status   = row[COL.STATUS - 1]; // C

        // URL이 없거나 이미 완료된 경우 건너뛰기
        if (!url) {
          row[COL.STATUS - 1] = "URL없음";
          continue;
        }
        if (status === "완료") continue;

        try {
          // QR 생성 API 호출
          const qrUrl = QR_BASE_URL + encodeURIComponent(url);
          const response = UrlFetchApp.fetch(qrUrl);
          let blob = response.getBlob();

          // 파일 이름 지정 (비어 있으면 기본 이름 사용)
          const safeName = filename && String(filename).trim() !== ""
            ? String(filename).trim()
            : "qr_" + (i + 2); // 행 번호 기반

          blob = blob.setName(safeName + ".png");

          // 드라이브에 파일 생성
          const file = folder.createFile(blob);

          // 상태 및 fileId 기록
          row[COL.STATUS - 1] = "완료";
          row[COL.FILEID - 1] = file.getId();

        } catch (e) {
          row[COL.STATUS - 1] = "에러: " + e.message;
        }
      }

      // 수정된 값 다시 시트에 반영
      range.setValues(values);
    }
    ```

🤖 사용한 AI 프롬프트

구글 시트와 앱스 스크립트를 연동해서 대량으로 QR 코드를 생성하고 싶어.
1) 무료 API 키를 사용해줘. 
2) 구글 시트에 입력된 이름을 그대로 파일 이름으로 사용해줘. 
3) 생성된 QR 파일은 구글 드라이브에 저장 되도록 해줘. 

🎬 관련 영상