2015-08-04 1 views
4

Как создать скрипт приложения, который прикрепляет электронную таблицу к файлу Excel и отправляет ее по электронной почте на определенный адрес электронной почты?Скрипты приложения Google: электронная почта в виде таблицы excel

Есть несколько старых сообщений в Stackoverflow о том, как это сделать, однако они, похоже, устарели и не, похоже, работают.

спасибо.

+0

показать нам, что вы пробовали и не работали. –

+0

Вы пробовали реализовать какой-то код? Для этого вы можете обратиться к документации сценария приложений. Для этого вы должны получить ссылку на экспорт файла электронной таблицы с типом mime и переслать в качестве вложения к электронной почте. Вы проверили недавний ответ в этой статье [http://stackoverflow.com/questions/12712137/google-apps-script-to-email-google-spreadsheet-excel-version?answertab=oldest#tab-top) Маркус Уль? Надеюсь, это поможет! – KRR

+0

Привет, Зиг и KRR. Я пробовал предложение в недавнем сообщении выше (Маркус), но есть пара вопросов. В первую очередь это использование var driveService = getDriveService(); который говорит, что «не может найти». Поэтому я должен упустить какой-то шаг, где? – Bhavin

ответ

3

Вот обновленная и рабочая версия. Одним из необходимых условий для этого скрипта Google Apps является то, что Дисковый API v2 Advanced Google Service должен быть включен. Включите его в свой скрипт Google Apps через Ресурсы -> Расширенные службы Google ... -> API-интерфейс накопителя v2 -> по адресу. Тогда это окно сообщит вам, что вы должны также включили эту службу в Google Developers Console. Следуйте по ссылке и включите службу там тоже! Когда вы закончите, просто используйте этот скрипт.

/** 
* Thanks to a few answers that helped me build this script 
* Explaining the Advanced Drive Service must be enabled: http://stackoverflow.com/a/27281729/1385429 
* Explaining how to convert to a blob: http://ctrlq.org/code/20009-convert-google-documents 
* Explaining how to convert to zip and to send the email: http://ctrlq.org/code/19869-email-google-spreadsheets-pdf 
* New way to set the url to download from by @tera 
*/ 
function emailAsExcel(config) { 
    if (!config || !config.to || !config.subject || !config.body) { 
    throw new Error('Configure "to", "subject" and "body" in an object as the first parameter'); 
    } 

    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var spreadsheetId = spreadsheet.getId() 
    var file   = Drive.Files.get(spreadsheetId); 
    var url   = 'https://docs.google.com/spreadsheets/d/'+spreadsheetId+'/export?format=xlsx'; 
    var token   = ScriptApp.getOAuthToken(); 
    var response  = UrlFetchApp.fetch(url, { 
    headers: { 
     'Authorization': 'Bearer ' + token 
    } 
    }); 

    var fileName = (config.fileName || spreadsheet.getName()) + '.xlsx'; 
    var blobs = [response.getBlob().setName(fileName)]; 
    if (config.zip) { 
    blobs = [Utilities.zip(blobs).setName(fileName + '.zip')]; 
    } 

    GmailApp.sendEmail(
    config.to, 
    config.subject, 
    config.body, 
    { 
     attachments: blobs 
    } 
); 
} 

Обновление: Я обновил способ установить URL, чтобы загрузить с. Выполнение этого через коллекцию file.exportLinks больше не работает. Спасибо @tera за указание на это в его ответе.

4

Похоже, что ответ @Christiaan Westerbeek - это пятно, но прошло уже год после его публикации, и я думаю, что в сценарии, который он дал выше, должно быть немного изменений.

var url = file.exportLinks[MimeType.MICROSOFT_EXCEL]; 

Существует что-то не так с этой строки кода, может быть, exportLinks сейчас обесценились. Когда я выполнил свой код, он дал ошибку следующего содержания:

TypeError: Cannot read property " application/vnd.openxmlformats-officedocument.spreadsheetml.sheet " from undefined.

Обходной выглядит следующим образом:

URL-адрес в строке выше кода в основном «скачать в XLSX» URL, который может можно использовать непосредственно скачать таблицу в формате XLSX, который вы получите от File> Download as > Microsoft Excel (.xlsx)

это формат:

https://docs.google.com/spreadsheets/d/<<<ID>>>/export?format=xlsx&id=<<<ID>>> where <<>> should be replaced by the ID of your file.

Проверить here, чтобы легко понять, как извлечь идентификатор из URL-адреса вашей страницы Google.

+0

Я думаю, что достаточно https://docs.google.com/spreadsheets/d/ << >>/export? Format = xlsx'. –

+0

согласовано .. подтверждено – tera

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