#csv #google-apps-script #google-sheets
#csv #google-apps-script #google-таблицы
Вопрос:
Я пытаюсь создать электронную таблицу Google, которая автоматически импортирует содержимое прикрепленного файла .zip из моего почтового ящика gmail (с пометкой test). Я абсолютно не программист, но я попытался скопировать и вставить некоторые рабочие фрагменты Google script. Я получаю ошибку «недопустимый аргумент» в строке 26 (извлеченный var = Utilities.unzip (csv);)
Заранее спасибо!
function getCSV() {
var query = "label:test";
var threads = GmailApp.search(query);
Logger.log('threads len ' threads.length);
Logger.log(query);
for (var i = 0; i < threads.length; i ) {
var messages = threads[i].getMessages();
Logger.log(messages);
for (var m = 0; m < messages.length; m ) {
var supportStats = [];
var msgs = GmailApp.getMessagesForThreads(threads);
Logger.log(msgs);
var attachments = msgs[0][0].getAttachments();
Logger.log(attachments);
var csv = attachments[0];
var extracted = Utilities.unzip(csv);
var string = extracted[0].getDataAsString(); //INVALID ARGUMENT ERROR
var data = Utilities.parseCsv(string);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("import");
sheet.clearContents();
var range = sheet.getRange(1,1, data.length,data[0].length);
range.setValues(data);
}}}
Ответ №1:
Судя по сообщению об ошибке, я подумал, что большой двоичный объект файла вложения может иметь неправильный тип mimeType (это application/x-zip
или другие?) для использования Utilities.unzip()
. Итак, как насчет этого изменения?
Модифицированный скрипт:
Пожалуйста, измените следующим образом.
От:
var csv = attachments[0];
Для:
var csv = attachments[0].setContentTypeFromExtension();
или
var csv = attachments[0].setContentType("application/zip");
Примечание:
- Судя по вашему сценарию и вопросу, эта модификация предполагает, что
attachments[0]
извлеченный изmsgs[0][0].getAttachments()
zip-файла большой двоичный объект. Если это не zip-файл, пожалуйста, измените скрипт.
Ссылки:
Если я неправильно понял ваш вопрос и это был не тот результат, который вы хотите, я приношу извинения.