Проблема при запуске скрипта api drive.file.list при работе модального диалогового окна таблицы с пользовательским интерфейсом html - PullRequest
0 голосов
/ 17 мая 2019

Сначала я запускал его в приложении на диске, оно отлично работает, затем я пытаюсь перейти на API и у меня возникает проблема, когда я запускаю это в пользовательском интерфейсе с HTML, программа не работает, но если я запускаютот же сценарий в редакторе, выбрав функцию и отладив ее работает, я считаю, что проблема заключается в том, что я должен сделать что-то с разрешением API, потому что я запускаю его в веб-браузере, когда я использую пользовательский интерфейс с HTML, но яне знаю, что делать

Я пытался создать проект в консоли Google API, но я также не получил ответа.

//html
function fillData() {
    var folderId = document.getElementById("ingress").value;
    document.getElementById("branch").innerHTML = "branch #" + (++branch);
    google.script.run
        .withSuccessHandler(newRun)
        .withFailureHandler(error)
        .fillData(folderId, 25,true);
}

//code.gs

function fillData(folderId, max, API) {
    sheet = SpreadsheetApp.getActive().getActiveSheet();
    var data = (API) ? API(folderId, max) :APP(folderId, max);
    var lastRow= getLastRow_(hojaAuditoria.getRange("A4:A"), 4);
    var dataRange = sheet.getRange(lastRow + 1, 1, data.length, data[0].length);
    dataRange.setValues(data);
    var timeStamp = new Date();
    sheet.getRange("B3")
        .setValue(timeStamp)
        .setHorizontalAlignment('left')
        .setFontWeight("normal")
        .setNumberFormat('dd/MM/yyyy HH:mm');
    SpreadsheetApp.flush();
    return (PropertiesService.getUserProperties().getProperty("token") != null);
}

function API(folderId, max) {
    max= (max === undefined) ? max= 100 : max;
    var pageToken = PropertiesService.getUserProperties().getProperty("token");
    var strAux = (folderId === undefined) ? "" : 'and "' + folderId + '" in parents';
    var query = 'mimeType != "application/vnd.google-apps.folder"' + strAux;
    var files;
    var result = [];
    files = Drive.Files.list({
        q: query,
        maxResults: max,
        pageToken: pageToken,
        includeRemoved: true,
        spaces: 'drive'
    });
    if (files.items && files.items.length > 0) {
        for (var i = 0; i < files.items.length; i++) {
            var file = files.items[i];
            var fileAux = DriveApp.getFileById(file.id);
            SpreadsheetApp.getActiveSpreadsheet().toast(file.title, "audit");
            var permissions = getPermissions(file.id);
            var parents = getParentData(file.parents);
            result[i] = [
                file.id,
                "=HYPERLINK(\"" + file.alternateLink + "\";\"" + file.title + "\")",
                file.mimeType,
                date(new Date(file.createdDate)),
                date(new Date(file.modifiedDate)),
                (file.fileSize === undefined) ? "" : file.fileSize,
                parents[0],
                parents[1],
                parents[2],
                (file.labels.trashed) ? "YES" : "NO",
                fileAux.getSharingAccess(),
                fileAux.getSharingPermission(),
                permissions[0],
                permissions[1],
                permissions[2],
                permissions[3]
            ];
        }
    } else {
        Logger.log('No files found.');
    }
    pageToken = files.nextPageToken;
    PropertiesService.getUserProperties().setProperty("token", pageToken);
    return result;
}

Я использую флаг API в функции fillData, чтобыперейти с DriveApp на API я получил отлично работающий пользовательский интерфейс с HTML, что удивительно, что он работает и в API, если я запускаю его с помощью отладки, предоставляемой редактором сценариев Google, но когда я запускаю API с пользовательским интерфейсом с HTML, я получил эту ошибку

ReferenceError: «Диск» не определен.в API (Permissions_Audit: 26) в fillData (sheetAudit: 62)

...