이 질문으로 얻은 코드를 내 작업 일정표에 맞게 수정을 해서 실행하니 스프레드 시트의 내용이 캘린더에 들어가는 마법같은 일이 벌어지더라구요.
여기서 끝~~~
이었으면 하루 종일 걸리지 않았겠지요 ㅜ.ㅜ
이번에도 내가 원하는 게 뭔지 몰라 생긴 일입니다.
3. 내가 진짜로 원하는 건 나도 몰랐지만 더 복잡한 것이었다.
저렇게 하고 일정을 추가해 보니 잘 되었습니다.
그런데, 일정 추가할 때 마다 범위를 다시 지정할 수는 없잖아요.
그래서 범위를 수정했어요.
내용이 들어있는 A1: B10을 지정했을 때 잘 되던게
내용이 없는, 앞으로 들아갈 가능성이 있는 범위까지 확대를 했지요.
A1:B30
이렇게 했더니 무슨 오류가 생기네요.
오류 내용을 잘 읽어봤습니다. B열에는 날짜가 들어가야 하는데, 날짜가 아닌 다른 내용이라는 거예요.
아무 것도 없으니 문제가 안된다 생각했는데, 다시 생각해 보니 아무 것도 없는 데이터도 데이터더라구요.
그래서 내가 원하는 것을 다시 정리해 봤습니다.
1. 스프레드 시트의 내용을 구글 캘린더에 자동으로 추가
2. A열은 이벤트 제목, B열은 날짜
3. 열의 길이는 최대 100개 (A1:B100)
4. B열은 순차적으로 들어가고, 중간에 빈 열은 존재하지 않음
5. A1:B100 범위에서 B열이 비어있는 부분 전까지 자동으로 범위 설정
이렇게 정리하고 나니, 앞에서 얻은 코드에 5번이 빠져있네요.
그래서 이렇게 질문을 했습니다.
[이 코드에서 var sheetDate = spreadsheet.getRange("A5:G100").getValues(); 이 부분을 실제 값이 있는 영역으로 자동 설정되도록 수정하고 싶어]
[이 코드]는 Bard가 알려준 내용을 바탕으로 제가 만든 시트에 작동하도록 수정한거예요.
이걸 먼저 Bard에게 알려준 후 이렇게 질문을 했지요.
그러니 역시 답을 줍니다.
받은 코드를 그대로 넣으니, 이게 잘 작동하네요.
여기서 끝~~
난줄 알았는데, 아직도 내가 '진짜로' 원하는 것을을 다 알아내지 못했습니다.
4. 빠진 부분을 추가로 질문하기
앱스크립트를 1번, 2번, 3번 반복해서 실행했을 때 문제가 되는거예요.
여기까지 얻은걸 한번에 정리하려고 하면, A4 한장도 넘게 나올거예요. 그래서 단계별로 작업하기로 했습니다.
다시 원하는 내용을 목록으로 작성을 합니다.
1. 스프레드 시트의 내용을 구글 캘린더에 자동으로 추가
2. A열은 이벤트 제목, B열은 날짜
3. 열의 길이는 최대 100개 (A1:B100)
4. B열은 순차적으로 들어가고, 중간에 빈 열은 존재하지 않음
5. A1:B100 범위에서 B열이 비어있는 부분 전까지 자동으로 범위 설정
6. 캘린더에 추가한 일정은 다시 등록되지 않아야 한다.
6-1 이를 위해 B열에 지정한 날짜의 일정을 알아야 한다.
6-2 종일 일정으로 등록하니, 종일 일정 목록만 알면 된다.
6-3 일정 제목은 출판사+책제목이기 때문에 똑같은 일정 제목은 없다.
6-4 일정을 추가하기 전에 A열의 출판사+책제목이 6-1에서 얻은 출판사+책제목과 비교해 같으면 추가에서 제외한다.
6-5 6-2에서 같은 일정이 발견되지 않으면 캘린더에 추가한다.
6-6 종일 일정이 없는 날이면 6-1~6-5 과정 없이 바로 추가한다.
** 남은 작업이 6번이라 6번만 구체적으로 정리했을 뿐, 1~5도 6번처럼 구체적으로 정리하면 각 항목 별로 여러 줄이 나오게 됩니다. 이걸 잘 정리해야 Bard가 진짜 잘 작동하는 코드를 알려줘요.
이렇게 정리한 후 하나씩 추가를 했습니다.
요구사항이 복잡해지면 논리적인 오류가 발생합니다. 논리적 오류가 발생하면 제대로 된 결과물을 얻을 수 없지요.
그래서 요구 사항을 하나씩 추가하기로 했습니다.
이 과정은 1~5번 코드를 짠 곳이 아닌, 새로운 파일을 만들어서 작업했어요.
만들어 놓은거 망가지면... 다시 복구할 능력이 안되니까 ㅜ.ㅜ
먼저 캘린더에서 종일 일정 제목을 불러오는 코드를 알려달라고 하고,
캘린더 일정 제목과 A열 제목을 비교하는 코드를 추가해 달라고 합니다.
제목이 같으면 캘린더에 일정을 등록하지 않도록 코드를 수정해 달라고 합니다.
이렇게 해서 만든 결과물을 1-5 코드와 합쳐달라고 합니다.
물론, 질문이 한번에 완성된건 아니에요.
질문을 어떻게 하느냐에 따라 결과물이 달라지고,
1~5 코드와 연동할 수 없는 결과물이 많이 나옵니다.
1~5 코드와 연동할 수 있는 결과물이 나오도록 질문을 잘 해야돼요.
이 부분을 추가하기 위해 질문을 과장 없이 100번쯤 다시 한 것 같아요.
최종 결과물을 얻어낸 후, 처음 던진 질문을 보니 내가 참 한심하다는 생각이 들더라구요.
내가 원하는 것이 스프레드의 데이터를 바탕으로 캘린더에 일정을 추가하는 것이라 생각했는데
사실은
1. 스프레드의 데이터를 바탕으로 캘린더에 일정을 추가하는데
2. 스프레드 시트의 특정 열은 일정 제목, 다른 열은 일정 날짜로 되어 있고
3. 데이터 범위는 앞으로 데이터를 넣을 곳 까지 지정해야 하지만
4. 데이터가 들어간 부분까지 자동으로 다시 범위가 지정되야 하며
5. 스프레드에 있는 내용 중 캘린더에 추가한 내용은 다시 추가하면 안된다.
라는 길고 복잡한 것이었지요.
그래서 AI에게 질문을 던지는 단순해 보이는 작업이 [프롬프트 엔지니어링]이라는 분야로 탄생한게 아닐까 싶어요.
아직 끝난게 아니에요.
5. 메뉴로 추가하기
일정 추가할 때 마다 앱스크립트로 들어갈 수는 없잖아요.
그래서 메뉴를 추가해야 합니다.
Bard에게 앱스크립트를 메뉴에 추가하고 싶다고 하니 코드를 알려주네요.
이건 좀 간단했어요.