【问题标题】:Translate Google Doc from List - Problem: does not fully run on some docs从列表中翻译 Google 文档 - 问题:在某些文档上无法完全运行
【发布时间】:2019-10-19 22:48:28
【问题描述】:

我创建了一些简单的代码,用于从单元格 B2 中的电子表格中提取 Google Doc URL。该代码适用于某些文档,但不适用于其他文档。

程序正确地创建了文档的副本,它保留了所有格式。从那里开始,我的目标是用西班牙语替换英文文本。

我在使用 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);
    }
  }

}

【问题讨论】:

  • 解决方案:清除段落文本,将段落附加“{sp}”并更新替换文本以搜索“{sp}”。它也跑得更快。 [代码]
    循环内: { para.clear(); para.appendText('{sp}'); para.replaceText('{sp}', transText); }

标签: google-apps-script google-docs google-translate google-language-api


【解决方案1】:

这是完整的解决方案。除非将 HTML 链接解释为文本元素,否则会跳过 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);   
    }
  }

}

【讨论】:

    猜你喜欢
    • 2014-10-08
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2021-12-05
    相关资源
    最近更新 更多