2017-07-21 13 views
1

Google Script変数を "mail_template" HTMLドキュメントに使用したいと思います。なぜ私の変数は、このHTML文書に使用することができない私はGoogleのスクリプト自体にそれらを使用することはできません私は理解していない。Googleスクリプトを使用して変数をHTMLにプッシュ

私は3つの文書があります。

  1. GoogleのシートにリンクされているGoogleのスクリプト(.GS)(の "X" を呼びましょう)
  2. 上記の "X"、GoogleのシートにリンクされているHTMLドキュメントを
  3. そして「X」* Googleのシート自体

この作業の目的は、Googleのシートのデータを使用して設計された電子メールを送信することです。

私は初心者であり、ドキュメントは高度なユーザー向けのようです。 https://developers.google.com/apps-script/guides/html/templates

一部のプラグインは同じ作業をしていますが、私のワークスペースには許可されていません。それは非常に困難です、私は3日以来それを解決しようとしていますが、私はまだできません。

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <base target="_top"> 
 
    </head> 
 
    <body> 
 
    <? solution1 ?> 
 
    
 
    </body> 
 
</html>

// This constant is written in column O for rows for which an email 
 
// has been sent successfully. 
 
var EMAIL_SENT = "EMAIL_SENT"; 
 

 
function testSchemas() { { 
 
    var sheet = SpreadsheetApp.getActiveSheet(); 
 
    var startRow = sheet.getLastRow(); 
 
    var numRows = 1; 
 
    var dataRange = sheet.getRange(startRow, 1, numRows, 15) 
 
    var data = dataRange.getValues(); 
 
    for (var i = 0; i < data.length; ++i) { 
 
    var row = data[i]; 
 
    var name = row[2]; 
 
    var surname = row[3]; 
 
    var salesRepEmail = row[4]; 
 
    var qualityAnalystEmail = "[email protected]" 
 
    var customerEmail = row[5]; 
 
    var websiteURL = row[6]; 
 
    var solution1 = row[7]; 
 
    function doGet() { 
 
    return HtmlService 
 
     .createTemplateFromFile('mail_template') 
 
     .evaluate(); 
 
} 
 

 
    
 
    
 
    var htmlBody = HtmlService.createHtmlOutputFromFile('mail_template').getContent(); 
 
    var emailSent = row[14];  // Third column 
 
    if (emailSent != "EMAIL_SENT") { // Prevents sending duplicates 
 
    /*MailApp.sendEmail(customerEmail, subject, message, { 
 
     cc: "", 
 
     bcc: qualityAnalystEmail + ", " + salesRepEmail 
 
     }); */ 
 
    MailApp.sendEmail({ 
 
    to: customerEmail, 
 
    bcc: qualityAnalystEmail + ", " + salesRepEmail, 
 
    subject: 'Résumé De Notre Consultation Du Site Mobile ' + websiteURL, 
 
    htmlBody: htmlBody, 
 
    }); 
 
} 
 
     Logger.log(name); 
 
     sheet.getRange(startRow + i, 15).setValue(EMAIL_SENT); 
 
     // Make sure the cell is updated right away in case the script is interrupted 
 
     SpreadsheetApp.flush(); 
 
    } 
 
    } 
 
}

答えて

1

あなたのHTMLテンプレートに.GSファイルから変数を渡すしたい場合は、(評価呼び出す前にこれを試してください)テンプレートオブジェクト上:

var template = HtmlService.createTemplateFromFile('mail_template'); 
template.myVar = myVar; 
return template.evaluate(); 

evaluate()を呼び出すと、JSスクリプトレット(インラインコード<? ?>)。変数をテンプレートにアクセスできるようにするには、単にオブジェクトプロパティとしてそれを添付します。最後に、変数をページに印刷するための正しい表記法は、

<?= myVar ?> 
+0

です。おかげさまで、ありがとうございます。それはまだ動作していない、それは私がやった何か愚かかもしれません。 –

+0

申し訳ありません、マーヴィン、それは単なる書式ですが、あなたのコードを見て、別の関数の中でdoGet()関数を実際に呼び出そうとしていますか?あなたのスクリプトは、まずWebアプリケーションとしてデプロイする必要があります。公開されたWebアプリケーションにそのURLを開いてアクセスすると、アプリケーションは着信GET要求を受け取り、doGet()関数を実行します –

関連する問題