Gmail 이미지를 GAS로 Google 드라이브에 저장
하고 싶은 일
Gmail에 도착한 메일의 이미지를 일일이 저장하는 것이 귀찮은 일이 있지요. 예를 들어 노기자카46의 모바일 메일을 멤버마다 다른 폴더에 저장하거나 매일 빠뜨리지 않고 저장하는 것은 상당히 어렵습니다. 그래서 이번에는 그것을 GAS(Google App Script)를 사용하여 자동화합니다.
GAS에서 Gmail 이미지를 Google 드라이브에 업로드
우선, 수동으로 Gmail에서 수신한 메일의 이미지 파일을 GAS를 사용하여 Google 드라이브에 업로드하는 스크립트를 작성합니다.
절차
우선, 수동으로 Gmail에서 수신한 메일의 이미지 파일을 GAS를 사용하여 Google 드라이브에 업로드하는 스크립트를 작성합니다.
절차
스크립트
function tamami() {
var fol = DriveApp.getFolderById('folder id'); #https://drive.google.com/drive/folders/{この部分}
var thds = GmailApp.search("from:[email protected] newer_than:1d", 0, 20);#メールアドレスを指定。1日以内のものを取得,20はスレッド数,一日当たりのメールが多い場合は大きめに設定。
var messe = GmailApp.getMessagesForThreads(thds);
for(var i = 0; i < messe.length; i++) {
for(var j = 0; j < messe[i].length; j++) {
var body = messe[i][j].getBody();
var myRegexp = /src="([\s\S]*?)">/g;#正規表現でURLを抽出。この当たりはメールによりけり。
urls = body.match(myRegexp);
if(urls) {
for(var k = 0; k < urls.length; k++ ) {
url = urls[k].slice(5,-2)#ここも環境により異なります
email_body = messe[i][j].getPlainBody()#メール本文
var fileName = email_body.slice(0,15) + String(k) + '.jpg';#メール本文の一部をファイル名に使用。(タイトルは常に”たまみより”なので)
try {
var response = UrlFetchApp.fetch(url);
var fileBlob = response.getBlob().setName(fileName);
new_file = fol.createFile(fileBlob);
new_file.setDescription(email_body);#ファイルの情報にメールの本文を追加。
}catch(e){
Logger.log(e);
}
}
}
}
}
}
이 작업을 GAS에서 실행하면 Google 드라이브에 이미지 파일이 저장됩니다.
[추기 1] 파일명에 날짜를 사용하고 싶은 경우
파일 이름 부분을 다음과 같이 변경
receive_date = Utilities.formatDate(messe[i][j].getDate(), "JST", 'yyyy/MM/dd-HH:mm');
var fileName = receive_date + String(k) + '.jpg';
[추기 2] 데코 메일러의 경우
다카야마 일실이나 사이토 아스카 등의 멤버라도 보존할 수 있는 방법이 발견되었으므로 추기합니다.
위 메인 스크립트의 try 부분을 다시 씁니다.
URL의 검출 로직이 바뀌므로 함수 전부를 올려 둡니다.
URL을 다시 쓰고 쿠키를 사용하여 원본 고화질 이미지에 액세스할 수 있습니다.
function asuka() {
var fol = DriveApp.getFolderById('folder id');
var thds = GmailApp.search("from:[email protected] newer_than:1d", 0, 20);
var messe = GmailApp.getMessagesForThreads(thds);
for(var i = 0; i < messe.length; i++) {
for(var j = 0; j < messe[i].length; j++) {
var body = messe[i][j].getBody();
var myRegexp = /href="([\s\S]*?)">/g;
urls = body.match(myRegexp);
//画像が複数枚あるので
if(urls) {
for(var k = 0; k < urls.length; k++ ) {
url = urls[k].slice(6,-2)
email_body = messe[i][j].getPlainBody()
var fileName = messe[i][j].getSubject() + String(k) + '.jpg';
try {
var response = UrlFetchApp.fetch(url);
var srcReg = /src="([\s\S]*?)"/;
srcurl = response.getContentText().match(srcReg)[0];
vurl = 'http://dcimg.awalker.jp/v' + srcurl.slice(7,-1);
iurl = 'dcimg.awalker.jp' + srcurl.slice(5,-1);
response = UrlFetchApp.fetch(vurl);
var cookies = response.getHeaders()["Set-Cookie"];
// ログインで認証されたcookieはヘッダーで使用
var headers = { 'Cookie' : cookies };
options = {
method : "get",
headers : headers,
followRedirects: false, //リダイレクトあり
};
response = UrlFetchApp.fetch(iurl, options);
var fileBlob = response.getBlob().setName(fileName);
new_file = fol.createFile(fileBlob);
new_file.setDescription(email_body);
}catch(e){
Logger.log(e);
}
}
}
}
}
}
스크립트 정기 실행
그리고는 위의 스크립트를 정기적으로 자동으로 실행시키는 것입니다. 이를 위해 GAS 트리거라는 기능을 사용합니다.
GAS 메뉴에서 "편집 → 현재 프로젝트 트리거"를 클릭합니다.
전환 대상 페이지에서 트리거 추가를 클릭합니다.
트리거를 다음과 같이 설정
요약
GAS를 사용하여 Gmail 이미지 파일을 자동으로 Google 드라이브에 저장할 수 있습니다. 명명 등은 원하는대로 변경해 주시면 좋다고 생각합니다. 이것으로 노기자카 라이프가 조금 풍부해졌어요.
참고 사이트
GAS에서 정규식
파일 저장
정기 실행
비슷한 기사
자신과 거의 같은 것을 생각했던 사람이있는 것 같습니다.
이쪽의 기사는 진지하게 써 있으므로 참고로 부디.
htps : // m / rs_kd56 / ms / 590756d9dcd89b7 0cd4
[오류] 해당 작업을 수행하려면 승인이 필요합니다.
정기 실행을 설정 후 일정 기간이 지나면 이러한 오류가 나오는(메일이 옵니다) 경우가 있는 것 같습니다.
이 경우 스크립트 편집 페이지에서 함수 → 함수 실행을 누릅니다. 액세스를 허가하는 다이얼로그가 나오므로 그것을 허가하면 다시 자동 실행이 가능하게 됩니다.
Reference
이 문제에 관하여(Gmail 이미지를 GAS로 Google 드라이브에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xanxus1204/items/32b35247a5585d1f3890
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
GAS를 사용하여 Gmail 이미지 파일을 자동으로 Google 드라이브에 저장할 수 있습니다. 명명 등은 원하는대로 변경해 주시면 좋다고 생각합니다. 이것으로 노기자카 라이프가 조금 풍부해졌어요.
참고 사이트
GAS에서 정규식
파일 저장
정기 실행
비슷한 기사
자신과 거의 같은 것을 생각했던 사람이있는 것 같습니다.
이쪽의 기사는 진지하게 써 있으므로 참고로 부디.
htps : // m / rs_kd56 / ms / 590756d9dcd89b7 0cd4
[오류] 해당 작업을 수행하려면 승인이 필요합니다.
정기 실행을 설정 후 일정 기간이 지나면 이러한 오류가 나오는(메일이 옵니다) 경우가 있는 것 같습니다.
이 경우 스크립트 편집 페이지에서 함수 → 함수 실행을 누릅니다. 액세스를 허가하는 다이얼로그가 나오므로 그것을 허가하면 다시 자동 실행이 가능하게 됩니다.
Reference
이 문제에 관하여(Gmail 이미지를 GAS로 Google 드라이브에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/xanxus1204/items/32b35247a5585d1f3890텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)