2016-12-01 1 views
1

Я установил структуру папок Google для работы с двумя уровнями подпапок. напримерGoogle drive/электронная таблица - уведомление по электронной почте, когда файл изменен в подпапке

Главная папка

-площадь 1

--- Исключен площадь

-площадь 2

--- Исключен область

мне нужно уведомление по электронной почте каждый раз, когда в файл изменен, чтобы другие пользователи имели самые современные данные. Я нашел скрипт онлайн, который работает в основном, но мне нужно, чтобы он мог проверять внутри подпапок для модификаций, которые этот сценарий не делает. Любая помощь будет оценена по достоинству. Спасибо, Аманда

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

Я не уверен, имеет ли Drive API уведомление по электронной почте. Однако в этом document описывается, как использовать push notifications, которые информируют ваше приложение при изменении ресурса. Вы можете использовать эту функцию для повышения производительности вашего приложения. Это позволяет вам исключить дополнительную сеть и вычислить затраты, связанные с ресурсами опроса, чтобы определить, были ли они изменены. Всякий раз, когда наблюдаемый ресурс изменяется, Drive API уведомляет ваше приложение.

Чтобы использовать уведомление толчка, вам нужно сделать три вещи:

  • зарегистрировать домен вашего приемного URL.

Например, если вы планируете использовать https://exampledomain.com/notifications в качестве принимающего URL, вам необходимо зарегистрироваться https://exampledomain.com. * Настройте свой получающий URL-адрес или приемник обратного вызова Webhook.

Это HTTPS-сервер, который обрабатывает сообщения уведомления API, которые запускаются при изменении ресурса.

  • Настройте канал уведомления для каждой конечной точки ресурса, которую вы хотите посмотреть.

Канал указывает информацию о маршрутизации для уведомлений. В рамках настройки канала вы определяете конкретный URL-адрес, по которому вы хотите получать уведомления. Всякий раз, когда изменяется ресурс канала, API-интерфейс Диска отправляет сообщение уведомления в виде запроса POST на этот URL-адрес.

Для приложений Google Drive, которые необходимо отслеживать изменения в файлы, перейдите по этой ссылке: https://developers.google.com/drive/v3/web/manage-changes

Я сделал некоторые исследования боя этого вопроса и нашел Feature request. В настоящее время он не поддерживает уведомления об изменениях на уровне папок.

Смежные вопросы