앱시트(Appsheet) 사용법 | 레코드 삭제 시 포함된 이미지 파일도 구글 드라이브에서 삭제하는 봇

안녕하세요. 노 코드 앱 제작 도구 앱 시트의 사용법, Appsheet에서 코딩 없이 앱 만들기 시리즈입니다.이번에는 앱 시트에서 이미지 컬럼이 포함된 행을 삭제할 때 해당하는 구글 드라이브의 이미지 파일도 함께 삭제되도록 하는 방법을 소개하겠습니다.단지 말만 보면 이게 무슨 일이야.당연한 일이 아닐까 생각할지도 모릅니다만, 앱 시트로 화상 업로드 기능을 사용하고 보는 것은 무슨 뜻인지 알 것 같아요!앱 시트에서 화상을 업로드하면 구글 드라이브에 화상 파일이 저장되지만, 그 화상과 관련된 행을 삭제해도 이미지 파일은 드라이브에 남아 있습니다.삭제한 행에 해당하는 이미지가 구글 드라이브의 용량도 좀먹기 때문에 함께 지울 수 있도록 해달라는 사용자의 요청이 있습니다 하지만 어떤 이유로 아직 반영되지 않았습니다.그래서 앱 시트의 달인들이 만든 트릭이 몇가지있습니다만… 그렇긴앱에서 기록을 삭제할 때 앱 내 이미지나 파일을 구글 드라이브 자체에서 삭제하는 커뮤니티에는 테이블 행이 삭제되었을 때 구글 드라이브에서도 이미지 파일을 삭제하고 싶다는 게시물이 많이 있습니다. 1년 전쯤 도입된 테이블로서의 폴더 기능을 이용해 그렇게 할 수 있다. 이 기능을 사용하여 www.googlecloudcommunity.com 에서 이미지 및 기타 문서 파일을 삭제할 수 있습니다.그 트릭을 연구하고 있어서… 저도 저만의 방법으로 트릭을 만들어 보았습니다.(웃음)만들고자 하는 속임수의 원리는 다음과 같습니다.사용하는 예는 현재 사용 중인 여행 기록 앱입니다.장소 목록이라는 테이블이 있는데, 여기에 데이터를 올릴 때 사진을 첨부하면 장소 목록_Images라는 폴더에 사진 파일이 저장됩니다.이벤트=장소 목록에서 레코드가 삭제될 때 프로세스=장소 목록_Images 폴더의 이미지 파일을 삭제하는 액션으로 구성된 봇을 만듭니다.본격적으로 시작하기 전에 “장소 목록_Images” 폴더가 App 시트 테이블에 연동되어야 합니다.폴더를 연동시키는 방법에 대해서는, 이전의 투고를 참조해 주세요.Appsheet 사용법 | 구글 드라이브 폴더의 파일 목록을 Appsheet에 연동하려면 안녕하세요.노코드앱제작도구Appsheet사용법Appsheet에서의코딩없이앱만들기시리즈입니다. 이번 시간… blog.naver.com폴더가 준비되면 위치 목록_Images 테이블에서 파일 이름을 추출하기 위한 가상 칼럼을 작성합니다.’장소 리스트’ 시트 안에 이렇게 파일명이 기재되어 있기 때문에 이 파일명을 찾아서 삭제해 주므로 이 파일명이 ‘장소 리스트_Images’ 폴더를 연동시킨 테이블 컬럼 안에 있는지 확인합니다.저의 경우 이미지 폴더가 appsheet/data/앱 이름 폴더 하위에 있기 때문에 폴더 목록 테이블에서 [Path] 컬럼 경로와 파일 경로가 일치하지 않았습니다.그래서 substitute 함수를 사용해서 [Path]라는 컬럼 값 중에서 “appsheet/data/앱 이름/”이라는 경로 부분은 제외하고 파일 이름 부분만 추출되도록 appformula를 썼습니다.Google 시트에 적힌 이미지 파일 경로와 폴더 연동 테이블의 [Path] 정보 파일 경로가 같다면 이 가상 칼럼은 만들지 않아도 됩니다.가상 칼럼에 넣은 포뮬러입니다. substitute([Path], “appsheet/data/OurTrip-3607245/”, “) 그러므로 filname이라는 컬럼에는 “장소 목록_Images/파일 이름.jpg”라는 값만 포함됩니다.다음은 액션을 1개 만듭니다. 액션의 종류 Dothis를 Data:executeanactiononasetofrows를 선택합니다.For a record of thistable에서 정한 테이블을 기준으로 Referenced Table로 Referenced Rows를 찾고 해당 행에 Refereced Actions를 실행시키는 액션입니다.(아주 유용하게 쓰지만 개념이 너무 어려워서 낯선 액션입니다.)TT)Referenced Rows에 수식을 list(lookup([사진],[장소 리스트_Images],[filename],[_ID])로 넣습니다.(만약 Path(※)컬럼을 그대로 이용하시는 분은 list(lookup([사진 칼럼 이름],”이미지 폴더 연동 테이블 이름”Path”_ID”)라고 적어야 하나요!)”장소 리스트”테이블에서,[사진]통관의 값을 “장소 리스트_Images”테이블의 “filename”칼럼에서 발견하고”_ID”을 갚는다는 의미입니다.Referenced Rows에는 Refereced Actions을 적용하는 행의 키(※)컬럼을 넣어야 하므로’_ID’값을 찾게 했어요.그리고 Referenced Rows에는 리스트 형태의 값만 들어갈 수 있고 list함수로서 lookup함수를 쌌어요.(쿠라 쿠라~~ 어렵습니다.)이 액션은 봇에 접속하므로 화면에서는 필요하지 않으므로 Prominence는 Do not display로 설정합니다.이제 봇을 생성합니다.Event 조건은 Data Change – Deletes only를 선택하고 Table은 “장소 목록”을 선택합니다.장소 목록 테이블에서 행이 삭제되었을 때 봇을 실행하라는 뜻입니다.Process 부분 설정은 프로세스 이름 상자를 클릭하여 하늘색 드롭다운이 나오면 Runa data action을 선택하고 그 아래 드롭다운에서 방금 만든 액션을 찾아서 선택합니다.다 끝났어요. 테스트를 위해 장소 목록 테이블에 사진이 있는 레코드를 하나 업로드해 보겠습니다.구글 드라이브의 “장소 목록_Images” 폴더에 이미지가 업로드되어 있는 것을 볼 수 있습니다.앱시트로 돌아가서 방금 등록한 줄 삭제해볼게요.앱시트의 기본 기능상 행을 삭제해도 ‘장소 목록_Images’ 폴더에 방금 업로드한 사진이 그대로 남아있는데, 저는 봇을 만들어 놓았기 때문에 그 이미지가 자동으로 삭제되는 것을 볼 수 있습니다.앱시트의 기본 기능상 행을 삭제해도 ‘장소 목록_Images’ 폴더에 방금 업로드한 사진이 그대로 남아있는데, 저는 봇을 만들어 놓았기 때문에 그 이미지가 자동으로 삭제되는 것을 볼 수 있습니다.오늘은 앱 시트에서 1)폴더를 앱 시트에 연동시키는 2)substitute함수 3)lookup함수 4)Data:executean action on a set of rows 5)보트의 기능을 써야 하고 난이도가 조금 높은 내용이었습니다.그리고 앱 시트 공식 커뮤니티에도 없는 나의 머리로 만든 방법이라···운영상의 문제가 없는지, 조금만 더 쓰고 봐야 할 것 같습니다.매우 복잡한 구조의 테이블이 아니면 이 방식을 적용하면 구글 드라이브에서 불필요한 화상을 삭제하는 데 도움이 되는 것은 아닐까 합니다.그럼 도움이 되길 바라며 읽어 주셔서 감사합니다.앱 시트 사용에 관한 글 집 http://eyemong.github.io/appsheet/앱 시트 사용에 관한 질문을 코딩하는 약사 E메일 [email protected]전자 안전 사용자 커뮤니티(네이버 카페)https://cafe.naver.com/appsheetkorea