Я создал процесс отправки CSV-файлов из нашего ERP-аккаунта в учетную запись GA и применения ярлыка к. Я хотел бы проанализировать вложения и обновить электронную таблицу, которая будет использоваться в качестве источника данных для другого проекта GA. Я всегда нажимаю на внутренние петли, когда пытаюсь что-то сделать, потому что, возможно, мой мозг подключен. В основном я набор вкладки в таблице и набор статических имен вложенных файлов CSV, как так:Обновление таблицы с помощью вложений электронной почты
*//Static array values will never change
var sheetNames = ["Wage Codes", "Phase Codes", "Cost Types", "Department"]
var csvName = ["Wage_Codes.csv", "Phase_Codes.csv", "Cost_Types.csv", "Department_Codes.csv"]*
Я хотел бы Переберите каждый массив импорта данных из csvName и установками значения ячеек в sheetNames
я могу получить массивы из вложенных файлов CSV и читать их в Logger, используя это:
var label = "Timesheet Data"
Var нить = GmailApp.getUserLabelByName (ярлык) .getThreads();
// Статические значения массива не изменится вар sheetNames = [ "Наемные коды", "Фазовые коды", "Виды затрат", "Отдел"] вар csvName = [ "Wage_Codes.csv", «Phase_Codes. CSV», "Cost_Types.csv", "Department_Codes.csv"]
//strip CSV attachemnts from emails and put in GDrive
var count = thread[0].getMessageCount();
for (var i = 0 ; i < count; i++) {
var attachments = thread[0].getMessages()[i].getAttachments()[0];
var csvData = Utilities.parseCsv(attachments.getDataAsString(), ",");
Logger.log(csvData);
И я могу сделать это на индивидуальной основе скачанный с помощью этого:
function importDeptCodes() {
var ss = SpreadsheetApp.openById('sheetID').getSheetByName('Cost Types');
var file = DriveApp.getFilesByName('Cost_Types.csv').next();
var arry = Utilities.parseCsv(file.getBlob().getDataAsString());
ss.getRange(1, 1, arry.length, arry[0].length).setValues(arry);
Logger.log(arry)
}
Собираем во внутреннюю петлю в первый пример кода - это то, где мой мозг громко свистеет.
, используя следующий код она импортирует все 4 раз, когда Yhe J цикл на один уровень вверх, и это только импорт в ВСЕМУ в универмаге листа так, как это теперь
function importCodes() {
var sheetNames = ["Wage Codes", "Phase Codes", "Cost Types", "Department"]
var csvName = ["Wage_Codes.csv", "Phase_Codes.csv", "Cost_Types.csv", "Department_Codes.csv"]
var ss = SpreadsheetApp.openById('sheetID');
for (var i = 0; i < sheetNames.length; i++) {
var ss = SpreadsheetApp.openById('sheetID');
var sheet = ss.getSheetByName(sheetNames.valueOf()[i]);
Logger.log(sheet.getName())
}
for (var j=0; j < csvName.length; j++) {
var file = DriveApp.getFilesByName(csvName.valueOf()[j]).next();
var arry = Utilities.parseCsv(file.getBlob().getDataAsString());
sheet.getRange(1, 1, arry.length, arry[0].length).setValues(arry);
Logger.log(sheet)
}
}
После того, как файл CSV из вложения, вы можете программно импортировать данные из CSV-файла в Диске в существующий лист Google с помощью Google Apps Script, заменив/добавления данных по мере необходимости. Чтобы помочь вам в реализации, проверьте импорт данных в этом сообщении SO - [Как автоматически импортировать данные из загруженного CSV или XLS-файла в Google Таблицы] (http://stackoverflow.com/questions/26854563/how- к автоматически-импорт-данных-из-закачано-CSV или XLS-файл-в-Google-листов). Надеюсь, поможет! – Teyam