2016-12-01 7 views
1

두 수준의 하위 폴더로 작업 할 수 있도록 Google 드라이브 폴더 구조를 설정했습니다. 예 :Google 드라이브/스프레드 시트 - 하위 폴더에서 파일이 수정 될 때 이메일 알림

홈페이지 폴더

- 지역 1

--- 제외 된 지역

- 지역 2

--- 제외 된 지역은

나는 이메일 통지마다 a를 필요 파일은 다른 사용자가 최신 데이터를 갖도록 수정됩니다. 대부분 온라인으로 작동하는 스크립트를 찾았지만 하위 폴더 내에서이 스크립트가 수행하지 않는 수정 사항을 확인할 수 있어야합니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다. Amanda

function GoogleDriveModifiedFiles(){ 

// Folder ID "XXXXXXXxxXXXwwerr0RSQ2ZlZms" of the folder to monitor for changes 
    var folderID = '"' + "0Bwz931NfDj3HUnhTVXBuc1lqMTg" + '"'; 

// Email Configuration 
var emailFromName ="Work Google Drive (Do Not Reply)"; 
var emailSubject = "Work Google Drive content has been modified"; 
var emailBody = "<br>You are receiving this email because a folder/file shared with you on Google Drive has been modified, click on the link to view new content<br>" 
var emailFooter = "Any questions please contact [email protected]"; 

var folderSearch = folderID + " " + "in parents"; 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getActiveSheet(); 
var email = sheet.getRange("E1").getValue(); 
var timezone = ss.getSpreadsheetTimeZone(); 
var today  = new Date(); 

var oneDayAgo = new Date(today.getTime() - 1 * 60 * 1000); 

var startTime = oneDayAgo.toISOString(); 

var search = '(trashed = true or trashed = false) and '+ folderSearch +' and (modifiedDate > "' + startTime + '")'; 

var files = DriveApp.searchFiles(search); 

var row = "", count=0; 

while(files.hasNext()) { 

var file = files.next(); 
var fileName = file.getName(); 
var fileURL = file.getUrl(); 
var lastUpdated = Utilities.formatDate(file.getLastUpdated(), timezone, "dd-MM-yyyy HH:mm"); 
var dateCreated = Utilities.formatDate(file.getDateCreated(), timezone, "dd-MM-yyyy HH:mm") 

row += "<li>" + lastUpdated + " <a href='" + fileURL + "'>" + fileName + "</a></li>"; 

sheet.appendRow([dateCreated, lastUpdated, fileName, fileURL]); 

count++; 
} 

if (row !== "") { 
row = "<p>" + count + " file(s) changed:</p><ol>" + row + "</ol>"; 
row += emailBody+"<br>" + "<br><small> "+emailFooter+" </a>.</small>";  
MailApp.sendEmail(email, emailSubject, "", {name: emailFromName, htmlBody: row}); 
} 
} 

답변

0

드라이브 API에 이메일 알림이 있는지 확실하지 않습니다. 그러나이 document은 리소스가 변경 될 때 응용 프로그램에 알리는 push notifications을 사용하는 방법을 설명합니다. 이 기능을 사용하여 응용 프로그램의 성능을 향상시킬 수 있습니다. 추가 네트워크를 제거하고 자원 폴링과 관련된 비용을 계산하여 변경 여부를 판별 할 수 있습니다. 감시 된 리소스가 변경 될 때마다 드라이브 API가 애플리케이션에 알립니다.

  • 이 수신 URL의 도메인을 등록

    당신은 세 가지를 할 필요가, 푸시 알림을 사용합니다. 당신이 당신의 수신 URL로 https://exampledomain.com/notifications를 사용하려는 경우 예를 들어

는, 당신은 https://exampledomain.com를 등록해야합니다. * 수신 URL 또는 "Webhook"콜백 수신기를 설정하십시오.

리소스가 변경 될 때 트리거되는 API 알림 메시지를 처리하는 HTTPS 서버입니다.

  • 보고 싶은 각 자원 종점에 대한 알림 채널을 설정하십시오.

채널은 알림 메시지의 라우팅 정보를 지정합니다. 채널 설정의 일부로 알림을 수신 할 특정 URL을 식별합니다. 채널의 리소스가 변경 될 때마다 드라이브 API는 알림 메시지를 해당 URL에 POST 요청으로 보냅니다. 나는이 문제를 사게 몇 가지 조사를했고,이 Feature request을 발견 https://developers.google.com/drive/v3/web/manage-changes

: 파일에 변경 내용을 추적이 링크를 따를 필요가 구글 드라이브 앱의

. 현재는 폴더 수준 변경에 대한 알림을 지원하지 않습니다.