0

基本的に、UI googleドキュメントに記載されているUIを変更して、ニーズに合わせています。ユーザーから情報を取得するパネルがあり、テンプレート内のいくつかの単語を置き換えて、最後にメールを送信することになっています。これは私がこれまでに書いたものです。置換が機能しない部分だけですべてがうまく機能しますwhich(var Time = setValue(e.parameter.userName)ですが、正しいかどうかわからないか、別のものを使用する必要があります。varTime=emailTemplateを使用してみました。 replace( "TIME"、e.parameter.userName)); しかし、参照エラーが発生します。eが定義されておらず、実行されていません。どんな助けでもいただければ幸いです。

 function onOpen() {
var subMenus = [{name:"test", functionName: "doGet"}];
           SpreadsheetApp.getActiveSpreadsheet().addMenu("texts", subMenus);}

    function doGet() {
  var doc = SpreadsheetApp.openById("SP ID");
  var app = UiApp.createApplication().setTitle('TITLE1');
  var grid = app.createGrid(10, 10);
  grid.setWidget(0, 0, app.createLabel('Time PST'));

   grid.setWidget(0, 1, app.createTextBox().setName('Time'));
  grid.setWidget(1, 0, app.createLabel('Minutes have passed'));

  grid.setWidget(1, 1, app.createTextBox().setName('Minutes'));
  grid.setWidget(2, 0, app.createLabel('Enter Name'));
  grid.setWidget(2, 1, app.createTextBox().setName('Name'));
  // Create a vertical panel..
  var panel = app.createVerticalPanel();

  // ...and add the grid to the panel
  panel.add(grid);


  var button = app.createButton('Submit');
  var handler = app.createServerHandler('b');
  handler.addCallbackElement(grid);
  button.addClickHandler(handler);

  // Add the button to the panel and the panel to the application, then display the                      application app
    panel.add(button);
    app.add(panel);
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  spreadsheet.show(app);
  }


  function b() {

    var doc = SpreadsheetApp.openById("SP ID");
    var emailTemplate =                              SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange("A1").getValue() ;
    var address = "albdominguez25@gmail.com";
    var Time = setValue(e.parameter.Time);
    var emailSubject = "Subject";
    emailTemplate = emailTemplate.replace("TIME",Time);  


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


    // Clean up - get the UiInstance object, close it, and return
    var app = UiApp.getActiveApplication();
    app.close();
    // The following line is REQUIRED for the widget to actually close.
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  spreadsheet.show(app);
  }​
4

2 に答える 2

1

あなたは正しい方向に進んでいるように見えます。Srikの答えは正しいですが、2番目の部分を実行する必要がないか、実行したくないようです。setID("Time")ただし、TextBox内のデータを使用するには、TextBoxをオンにする必要がありますe.parameter.Time

そして、あなたは変更する必要があります

var Time = setValue(e.parameter.Time);

var Time = e.parameter.Time;

これはあなたにとってはうまくいくはずですが、私はまったく別の方法で、テンプレートファイルでHTMLServiceを使用し、スタンドアロンアプリとしてスクリプトを公開しました。

于 2012-11-08T20:29:21.993 に答える
0

ボタンがクリックされたときにTextBoxの「時間」のテキストを変更したいとします。

まず、テキストボックスにIDを設定する必要があります

function doGet(){
  ...
  grid.setWidget(0, 1, app.createTextBox().setName('Time').setid('Time');
  ...
}

次に、TextBoxでsetText()を使用して値を変更する必要があります

function b(e){ // Note the argument 'e'
  ...
  var Time = app.getElementById('Time').setText(e.parameter.Time);
  ...
}
于 2012-11-08T18:15:54.113 に答える