Перевести Google Doc из списка - Проблема: не полностью работает на некоторых документах - PullRequest
1 голос
/ 20 октября 2019

Я создал простой код, который извлекает URL Google Doc из электронной таблицы в ячейке B2. Код работает для некоторых документов, но не для других.

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

Я сталкиваюсь с ошибками с ссылками Http: //, некоторые документы полностью переформатируются, другие нет.

Предложения?

    //This function works to create a nearly perfect copy of the document from English to Spanish. Problems with URLs and some long docs.

function spanishConverter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); //bound to Google Sheet
  var listDoc = ss.getSheetByName('Doc List'); //SpreadSheet Page 
  
  var docEng = listDoc.getRange(2,2).getValue(); //Cell pulling URL from
   
  
  var currentDoc = DocumentApp.openByUrl(docEng); //Opens the English version from URL on SpreadSheet
  var docName = currentDoc.getName(); 
  var docId = currentDoc.getId();
  
   
  var newDoc = DriveApp.getFileById(docId).makeCopy('Spanish ' + docName).getUrl(); //Opens and makes a copy and captures URL
  
  
  var newSp = DocumentApp.openByUrl(newDoc);
  
  var body = newSp.getBody();
  var paragraphs = body.getParagraphs();


  //This script loops throught the paragraphs
  for(var i=0; i<paragraphs.length; i++)
  {
    var text = paragraphs[i].getText(); //pulls text per paragraph
    var transText = LanguageApp.translate(text, 'en', 'es');
    Logger.log([text,transText]);
    if (text !== "") //skips blanks 
    {
    body.replaceText(text, transText);
    }
  }

}

1 Ответ

0 голосов
/ 20 октября 2019

Это полное решение. HTML-ссылки пропускаются, если они не интерпретируются как текстовые элементы.

// This function works to create a nearly perfect copy of the document
// from English to Spanish.

function spanishConverter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); //bound to Google Sheet
  var listDoc = ss.getSheetByName('Doc List'); //SpreadSheet Page 
  
  var docEng = listDoc.getRange(2,2).getValue(); //Cell pulling URL from
   
  
  var currentDoc = DocumentApp.openByUrl(docEng); //Opens the English version from URL on SpreadSheet
  var docName = currentDoc.getName(); 
  var docId = currentDoc.getId();
  
   
  var newDoc = DriveApp.getFileById(docId).makeCopy('Spanish - ' + docName).getUrl(); //Opens and makes a copy and captures URL
  
  
  var newSp = DocumentApp.openByUrl(newDoc);
  
  var body = newSp.getBody();
  var paragraphs = body.getParagraphs();


  //This script loops throught the paragraphs
  for(var i=0; i<paragraphs.length; i++)
  {
    var para = paragraphs[i];
    var text = para.getText(); //pulls text per paragraph
    var atts = para.getAttributes(); //pulls formatting attributes to set when appending text
    var transText = LanguageApp.translate(text, 'en', 'es');
    Logger.log([atts]);
    if (text !== "") //skips blanks 
    {
      para.clear();
      para.appendText('{sp}').setAttributes(atts);
      para.replaceText('{sp}', transText);   
    }
  }

}
...