Можно вызвать getId () в исходном файле, но не в дублированном файле [duplicate]

, начиная с версии 7.1.2, вы можете запустить pip uninstall -y & lt; python package & gt;

0
задан Prisoner 13 4 March 2014 в 07:45
поделиться

2 ответа

Теперь, когда мы знаем, что это текстовый / простой документ, мы можем добавить хороший метод для его обработки. Как сказал Серж, в этом посту метод, который вы используете, действителен только для файлов «google document», поэтому перед его использованием вы должны проверить, что это файл документа google. Мы собираемся сделать то же самое, но с текстовыми / открытыми документами:

function testGetFile(){
  getFile("testGetFile", "WhoAmI");
}

function getFile(calledFrom, targetFile){
  var root = DriveApp.getRootFolder();
  var files=root.getFiles();

  /*
  instead of a root getFiles() I prefer to use searchFiles
  I'ts less work for your script.
  the documentation on search: https://developers.google.com/drive/web/search-parameters
  */
  files = root.searchFiles("title = 'WhoAmI' and mimeType = 'text/plain'"); // if it's a txt doc it should have .txt at the end of it's title: "WhoAmI.txt"
  var numFiles=0;

  while (files.hasNext()) {
    var file = files.next();
    numFiles++;
    var filename = file.getName();
    var mime = file.getMimeType();
    Logger.log(mime); // produce a lot of output

    if (filename == targetFile && mime=="application/vnd.google-apps.document") {

      Logger.log("Success.  Found GOOGLE DOC file: " + filename);
      Logger.log(' Number of files processed = '+numFiles+'\n\n');

      var fileId = file.getId();
      var doc = DocumentApp.openById(fileId);       // this won't fail anymore (I hope)
      var body=doc.getBody();
      var text=body.getText();

      Logger.log('text = '+text);// there it is         

      return text;
    }
    else if(filename == targetFile && mime=="text/plain") {
      Logger.log("Success.  Found TXT file: " + filename);
      Logger.log(' Number of files processed = '+numFiles+'\n\n');
      var text = file.getBlob().getDataAsString();
      Logger.log('text = '+text);// there it is         

      return text;
    }
  } // while()  
  return -1;
}
1
ответ дан Harold 16 August 2018 в 00:19
поделиться
  • 1
    Это отлично работает при запуске как есть. Спасибо! И спасибо за указатель на документы! Существует новая связанная с этим проблема, которая сохраняется и до вышеуказанных исправлений. Вкратце, вызов функции DriveApp.getRootFolder () завершается с проблемой разрешения, когда вышеуказанная функция используется как часть библиотеки. Я думал начать новую цепочку, но единственное отличие: function testGetFile () {PT.getFile («WhoAmI»); } Точное сообщение об ошибке: Выполнение не выполнено: у вас нет разрешения на вызов getRootFolder. Мой сценарий, моя папка, мой файл, мой диск ... Почему нет разрешения? – Prisoner 13 6 March 2014 в 05:04

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

Чтобы это просто не добавить второе условие в вашем коде:

if (filename == targetFile && file.getMimeType()=="application/vnd.google-apps.document") {

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

1
ответ дан Serge insas 16 August 2018 в 00:19
поделиться
  • 1
    Спасибо за ваш ответ. Хотя я смущен. Согласно Гарольду, «txt может быть открыт с помощью driveapps». Как я упоминал в своем комментарии Гарольду минуту назад, тип mime сообщает как «text / plain». Но вы заявили, что «методы, которые вы используете, когда условие истинно, относятся только к документам Google и будут терпеть неудачу, если вы попытаетесь использовать их в других типах файлов». Итак, это противоречит тому, что сказал Гарольд, оставив вопрос ... Каким образом можно открыть текстовый документ? Это может быть неудачно, потому что у него нет расширения .txt? Спасибо за помощь! – Prisoner 13 5 March 2014 в 02:19
  • 2
    См. Ответ Гарольда, который четко показывает, как получить содержимое txt-файлов. Я говорил о DocumentApp, который применяется только к документам Google. – Serge insas 5 March 2014 в 10:03
Другие вопросы по тегам:

Похожие вопросы: