2

GoogleScriptGadgetが埋め込まれている現在のページのURLを取得できるメソッドを探しています。

getActivePage()を使用してみましたが、Googleサイトのホームページしか返されません。この問題によると:http ://code.google.com/p/google-apps-script-issues/issues/detail?id = 568アクティブなサイトを取得し、アクティブなページを取得するのに欠陥がありますが、それは2011年9月でした...

これが私のコードです:

    var site = SitesApp.getActivePage();

getActivePage()を誤って使用していますか?

よろしくお願いします。

1回の試行を編集します。

  var templates = site.getTemplates();
  var template;
  var names = '';
  for (var i = 0; i < templates.length; i++) {
    if (templates[i].getName() == 'profile') {
      template = templates[i];
      break;
    }
  }
  if (template != null) {
    var pageName = name;
    Logger.log('Found: ' + pageName);
    site.createPageFromTemplate(pageName, pageName, template);
  }
  else {
    Logger.log('Not Found');
  }
4

1 に答える 1

1

次のスクリプトを作成しました

function doGet(e) {
  var app = UiApp.createApplication();
  var lbl = app.createTextArea();
  lbl.setWidth('100%');
  lbl.setHeight('100%');
  var txt = SitesApp.getActivePage().getUrl();
  lbl.setText(txt);
  app.add(lbl);
  return app;
}

そして、このスクリプトにリンクされたGoogleScriptGadgetを埋め込んだ2ページ。スクリプトの出力は、インターネットブラウザのアドレスバーのURLと同じです。

@LehanCoetzeeコード。

    var templ = HtmlService.createTemplateFromFile('profile').evaluate();
    site.createPageFromTemplate(name + ' ' + surname, name, templ);

「profile」は、AppsScriptEditorで作成したHTMLテンプレートです。

編集01: 上記のスクリプトにリンクされたガジェットを使用してテンプレートページを作成しました。スクリプトの名前はProfileTemplateです。また、次のスクリプトで新しいページを作成しました。

function doGet(e) {
  var app = UiApp.createApplication();
  var panel = app.createVerticalPanel();
  var tb = app.createTextBox().setName('tb').setId('tb');
  var btn = app.createButton().setText('Create').setId('btn');
  var out = app.createTextArea().setId('out');
  var handler = app.createServerHandler('onBtnClick');
  handler.addCallbackElement(panel);
  btn.addClickHandler(handler);
  panel.add(tb);
  panel.add(btn);
  panel.add(out);
  app.add(panel);
  return app;
}

function onBtnClick(e) {
  var app = UiApp.getActiveApplication();
  var site = SitesApp.getActiveSite();
  var out = app.getElementById('out');
  var templates = site.getTemplates();
  var template;
  var names = '';
  for (var i = 0; i < templates.length; i++) {
    if (templates[i].getName() == 'profiletemplate') {
      template = templates[i];
      break;
    }
  }
  if (template != null) {
    var pageName = e.parameter.tb;
    out.setText('Found: ' + pageName);
    site.createPageFromTemplate(pageName, pageName, template);
  }
  else {
    out.setText('Not Found');
  }
  return app;
}

新しいページを開いて、たとえばtest1やtest2などのテキストを入力し、Createボタンをクリックすると、テンプレートから新しいページが作成されます。テンプレート化されたページには、テキスト「test1」のhttps://sites.google.com/a/..../.../test1のようなURLが含まれ、ガジェットの出力にはこのテキストが含まれます。

于 2012-07-16T07:52:12.250 に答える