2016-11-23 8 views
0

나는 한 언어로 된 구글 문서를 가지고 있으며 번역이 필요합니다.
"도구> 문서 번역"옵션이 있다는 것을 알고 있지만, 변경을 할 때마다 수동으로 번역해야한다는 의미입니다.
번역 된 문서가 원본 문서와 동기화되어 원본 문서를 변경할 때마다 번역 된 문서도 적절하게 변경됩니다. 스프레드 시트의
--- 거기 GOOGLETRANSLATE 기능Google 워드 프로세서 라이브 번역

나는 그것이 애플 리케이션 스크립트 명령 LanguageApp.translate
를 통해 할 수있을 거라고 생각 해요

입니다하지만 난 원래 문서

에서 콘텐츠를 가져 오는 방법을 모른다 편집 ---
현재 내가, 대상 문서가 번역 또는 무엇의 로그는 문서를 보인다면 내가 확실하지 않다

function translate() { 
var original = DocumentApp.openById('Oringinal document id'); 
var translated = LanguageApp.translate(original, 'zh', 'en'); 
Logger.log(translated); 
return translated; 
} 

에이 스크립트를 설정 한 변수의 내용을 가져 오는 방법을 모르겠다. 변수를 새 문서에 인쇄하는 방법도 모른다.
트리거에서 나는 시간 구동 트리거 만 볼 수 있습니까? 원본 문서에 스크립트를 설정한다고 가정합니까?

+1

예를 들어, 한 문서에서 데이터를 가져 와서 Translate API를 통해 다른 문서로 변환하여 번역 할 수 있습니다. 하지만 Docs는'onOpen' 트리거 만 가지고 있으며 스프레드 시트처럼'onEdit'가 아닙니다. 따라서 문서를 업데이트 할 때 수동으로 스크립트를 트리거해야합니다. 지금까지 뭐 해봤 어? – Brian

+0

@BrianBennett, 내가 시도한 것을 추가했습니다 – TTDA

+0

가장 큰 문제는 Translate API가 문서 ID가 아니라 객체를 필요로한다는 것입니다. 따라서 번역하기 위해 텍스트를 보내거나 가져 오기 전에해야 할 일이 있습니다. 자세한 내용은 내 대답을 참조하십시오. – Brian

답변

1

이것은 개념의 증명입니다. 스크립트는 작동하지만 서식이나 이미지는 유지하지 않습니다. Google 문서 도구에는 onEdit 트리거가 없습니다. 사용자 정의 시간 트리거를 만들 수 있지만 문서가 업데이트되지 않으면 백그라운드에서 계속 실행되므로 바람직하지 않을 수도 있습니다.

// Grab the document body. No formatting, tables, etc are kept. 
function getText() { 
    var sourceDoc = DocumentApp.openById('idHere'); 
    var sourceBody = sourceDoc.getBody(); 

    // Push the body to an array for translating in the destination 
    var array = []; 
    array.push(sourceBody.getText()); 
    translateText(array); 
} 

// Take the array and translate to Spanish. 
function translateText(e) { 
    // Translate the array 
    var es = LanguageApp.translate(e, 'en', 'es'); 

    // Open the doc to hold the translation 
    var childDoc = DocumentApp.getActiveDocument(); 

    // Clear out any previously-held text and then append the updated text from source. 
    childDoc.getBody().clear(); 
    childDoc.getBody().appendParagraph(es); 
} 

이 거친, 그러나 당신이 당신의 자식 문서에 추가하고 스크립트 편집기에서 실행할 경우 작동합니다. 소스에서 작동하도록 리팩터링하고 하위 문서로 푸시 할 수도 있습니다. PropertiesService으로 코드를 하드 코딩 할 필요가 없도록 문서의 원래 ID를 보유하도록 변수를 설정하는 것도 가능합니다. 그것을 개선하기위한 몇 가지 아이디어. 이 형식은 본문 텍스트 만 가져오고 형식은 사용하지 않는다는 사실을 잊지 마십시오.