0

パネルから情報を取得するスクリプトがあります。情報を入力したら、ユーザーが[送信]ボタンをクリックすると、入力したデータがスプレッドシートに保存されます。このスプレッドシートは、後でそのスプレッドシートのセルにあるテンプレートの一部のフィールドを置き換えるために使用されます。このプロセスは、これらすべてを実行するのに約1分かかるなど、非常に時間がかかります。私が疑問に思っていたのは、パラメータ情報を使用して、持っているテンプレートでデータを置き換えることができれば、スプレッドシートのセルにデータを保存する代わりに、可能かどうかということです。これを行う方法についてのアイデアはありますか?

function a(e) {

   var doc = SpreadsheetApp.getActiveSpreadsheet();
var timecell = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange("A2");
var timebval = timecell.setValue(e.parameter.Times);
var t1 = timecell.getValue();
var mincell = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange("A3");
var minbval = mincell.setValue(e.parameter.Minutes);
var t2 = mincell.getValue();
var namecell = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange("A4");
var nabval = namecell.setValue(e.parameter.Name);
var t3 = namecell.getValue();
var email = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange("A5");
var emaval = email.setValue(e.parameter.email);
var t4 = email.getValue();
var address = "albdominguez25@gmail.com";
var advancedArgs = {bcc:t4};
var emailSubject = "Test";

var emailTemplate =SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange("A1").getValue() ; 
  emailTemplate = emailTemplate.replace("TIME",t1).replace("MIN",t2).replace("EXP",t3);   



MailApp.sendEmail(address, emailSubject, emailTemplate, advancedArgs);

Browser.msgBox("Your Email has been sent!");
4

1 に答える 1

3

スプレッドシートに何かを保存して値ごとに読み戻す代わりに、以下に示すように、replaceメソッドで値を直接使用します。

function a(e) {
  var address = e.parameter.email;
  var advancedArgs = {bcc:t4};
  var emailSubject = "Test";

  var emailTemplate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange("A1").getValue() ; 
  emailTemplate = emailTemplate.replace("TIME", e.parameter.Times).replace("MIN", e.parameter.Minutes).replace("EXP", e.parameter.Name);   

  MailApp.sendEmail(address, emailSubject, emailTemplate, advancedArgs);
  Browser.msgBox("Your Email has been sent!");
}

後で参照するためにもこれらの値をスプレッドシートに保存する必要がある場合は、setValueを数回呼び出すよりも、1つのsetValuesを実行する方が高速です。パラメータ情報を使用して電子メールを送信した後、これを呼び出すだけで、すべての値を一度に設定できます。

var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange("A2:A5");
range.setValues([[e.parameter.Times], [e.parameter.Minutes], [e.parameter.Name], [e.parameter.email]]);
于 2012-11-19T09:48:13.100 に答える