Копирование значений в электронную таблицу, если значение еще не существует - Google Script - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь:

  1. Перейти в папку Drive и получить идентификаторы spreadSheet для существующих электронных таблиц
  2. Перейти в каждую электронную таблицу и получить некоторые данные
  3. Скопируйте эти данные в TargetSheet
  4. С условием, что данные уже не существуют

Из 1-3 У меня нет проблем, но я не могу правильно искать и сопоставлять, если данныеуже существует

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

Любая помощь, пожалуйста?

function getReportData() {

//Sources
var reportFolder = DriveApp.getFolderById('ReportFolderID') // Get Status reports folder
var reportsList = reportFolder.getFiles(); //Returns FileIterator object
var spreadSheets = [];
var targetSSheet = SpreadsheetApp.openById('TargetSheetID');
var targetSheet = targetSSheet.getActiveSheet();
var lastRow = targetSheet.getLastRow();

var searchRange = targetSheet.getRange(2, 1, lastRow, 2);
var searchRangeV = searchRange.getValues();
var allStatuses = [];


//Populate the reportSheets list with latest report sheet IDs
while (reportsList.hasNext()) {
    var reports = reportsList.next(); //Object of type file
    spreadSheets.push(reports.getId());
}


// Loop through the list of report sheets
for (i = 0; i < spreadSheets.length; i++) {
    var spreadSheet = SpreadsheetApp.openById(spreadSheets[i]);
    var activeSheet = spreadSheet.getActiveSheet();
    var individualStatus = [];


    // Gets project report data
    var projectName = activeSheet.getRange("B3:B4").getValue();
    var reportDate = activeSheet.getRange("I3:I4").getValue();
    var projectStatus = activeSheet.getRange("G9:i9").getValue();

    // Creates reports array
    individualStatus.push(reportDate, projectName, projectStatus);

    allStatuses.push(individualStatus)

}

   //Cleans the status array of existing ones
for (j = 0; j < allStatuses.length; j++) {

    var searchKey = allStatuses[j][0] + allStatuses[j][1];
    searchKey

    Logger.log(searchKey)

    for (k = 0; k < searchRangeV.length; k++) {

        var matchKey = searchRangeV[k][0] + searchRangeV[k][1];

        if (searchKey == matchKey) {
            allStatuses.splice(j, 1)
            break;
        } else {
            Logger.log(searchKey)
            Logger.log(matchKey)
        }

    }
}

//Copies the data to Target Sheet
for (var project = 0; project < allStatuses.length; project++) {
    //Gets the last row each time it goes through the loop
    var latestRow = targetSheet.getLastRow();
    var lastColumn = targetSheet.getLastColumn();

    for (var status = 0; status < allStatuses[project].length; status++) {

        targetSheet.getRange(latestRow + 1, status + 1, 1, 1).setValue(allStatuses[project][status])


    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...