2017-12-25 5 views
1

HTMLServiceを使用してHTMLテンプレートを作成し、テンプレートコンテンツを翻訳してからテンプレートに変数を公開してから、メールを送信します。HTMLテンプレートを作成>翻訳>テンプレートに変数を公開する(Google Apps Script)

テンプレートが翻訳された後に変数が公開されることが重要です(変数はユーザーが提供するコンテンツなので、翻訳する必要はありません)。

テンプレートを翻訳した後に変数を追加するのが苦労しています。

HTMLテンプレート(test.htmlという)

<table><tr><td> 
Text (in english) which needs to be translated.<br><br> 
<?=variable?> 
</td></tr></table> 

ガスコード

var template = HtmlService.createTemplateFromFile('test').getRawContent(); 
var translatedmessage = LanguageApp.translate(template, 'en', 'es', {contentType: 'html'}); 
translatedmessage.variable = "service"; 

// I have a number of variables and do not want them translated. 

MailApp.sendEmail({ 
    to: 'email address', 
    subject: 'This subject', 
    htmlBody: translatedmessage 
}) 

答えて

1

それは(完全にビューを構築するから、ビジネスロジック層(テキスト+翻訳)を分離するのが最善ですテキストをテンプレートにプッシュし、変数を追加する)。 .gsコードでは、テキストをグローバル変数またはオブジェクトプロパティとして宣言します。

var data = { text: “your text }; 

次は、テキスト翻訳機能を定義:例えば、translate関数や他の変数によって返されたテキストを収容するコンテナを追加し、テンプレートで

function translate (text) { 

    return LanguageApp.translate(text, sourceLang, targetLang); 

    } 

<div><?!= translation ></div> 
<div><?!= variable ></div> 

最後に、ファイルからテンプレートを作成し、変数を設定し、evaluate()メソッドを実行してHtmlOutputに変換します。

var template = HtmlService.createTemplateFromFile('test'); 
var translatedmessage = translate(data.text); 
template.translation = translatedmessage; 
template.variable = "service"; 

MailApp.sendEmail({ 
    to: 'email address', 
    subject: 'This subject', 
    htmlBody: template.evaluate().getContent() 
}) 
+0

ありがとうございました。私は、コンテンツを個別に翻訳するのではなく、HTMLテンプレート全体を最初に翻訳する方が簡単になることを望んでいました。しかし、これは私が別のプロジェクトを立ち上げて、まだ動作させている方法です。 – Johnny

+0

私はそれがより簡単だとは思わない。たとえば、この変数は、JavaScriptではHtmlTemplate型ではなく、String型であるため、 "translatedmessage.variable =" service "は機能しません。 HtmlService.getRawContent()の戻り値の型は 'String'です。テンプレートに対してこのメ​​ソッドを実行すると、スクリプトレットの変数を設定することができなくなります

+0

テンプレートを翻訳した理由は、テンプレートは大量のコンテンツを持つので、個々の変数としてすべてのコンテンツを取り出してから変数を翻訳するのではなく、テンプレートを翻訳して後でユーザー固有の変数を追加する方が簡単だと思いました。それは意味がありますか?それにもかかわらず、テンプレートをコンテナ/変数に変換したので、必要な変数だけを翻訳することができます。あなたのお手伝いをしてくれてありがとう。 – Johnny

関連する問題