Как отладить DriveApp.getFileById с помощью скрипта Google App - PullRequest
0 голосов
/ 20 февраля 2020

Я не могу вернуть файл, который, как мне известно, находится на моем Google Диске, и я не уверен, как отладить, в чем проблема.

Вот код, который я запускаю:

function get_file_contents() {
  try {
    var fileName = "rainbows.json";
    var files = DriveApp.getFilesByName(fileName)

     if (files.hasNext()) {
       var file = files.next();
       var content = file.getBlob().getDataAsString();
       var json = JSON.parse(content);
     }
  }catch(e){log(e)}
  return json;
}

Когда я использую отладчик в скрипте приложения Google, он некоторое время зависает в строке var file = DriveApp.getFilesByName(fileName) и затем останавливается. Все, что я вернусь, это {}.

Кроме того, я попытался использовать DriveApp.getFileById(), и я получил тот же результат.

Если бы вы могли указать мне какие-либо ресурсы для этого, я был бы признателен. Я уже пытался просмотреть документы , но я либо что-то упустил, либо ответа там нет.

1 Ответ

0 голосов
/ 20 февраля 2020

Вы не можете отлаживать внутреннее поведение вызовов таких служб, как DriveApp, вы можете только посмотреть, что вы передаете ему и что он возвращает.

Если вы не можете найти данный файл по имени, проблема, вероятно, связана с более высоким уровнем, например, с разрешениями или расположением файла.

DriveApp.getFilesByName ()"Получает коллекцию всех файлов на диске пользователя с указанным именем." Часть, которую я выделил, является ключевой, она не затрагивает файлы, к которым у вас есть доступ, но которые не находятся на вашем диске. Например, файлы, к которым вам предоставлен общий доступ, или файлы, которые находятся на общих дисках.

Однако DriveApp.getFileById () должен работать в обоих случаях, выбирая любой файл, к которому у вас есть доступ.

Я бы сосредоточился на тестировании с DriveApp.getFileById (), обратите внимание, что getFileById возвращает объект File , а не File Iterator , поэтому вы не можете просто оставить его на месте getFilesByName (). Это должно быть проверено по-другому. getFileById () должен вызывать исключение при сбое, в то время как getFilesByName () просто возвращает пустой итератор.

Если вы не можете открыть файл по ID, вы, вероятно, смотрите на проблему с разрешениями, возможно, скрипт выполняется с неверной учетной записью, либо ему не предоставлен доступ к диску (хотя вам будет предложено автоматически предоставить эту область), либо выполняется триггер, который не разрешает доступ к DriveApp.

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