0

スプレッドシートのメニューからアクセスできるようにするには、2 つの別個のフォームが必要です。いくつかのトラブルの後、Mogsdad からこの素晴らしい回答を見つけました: Single Google Form for multiple Sheets

htmlservice を使用してフォームを uiapp に埋め込むために彼のコードを使用しました。したがって、私のコードは彼のように見えます:

function launchTecForm() {
  var TecformID = '1_some_form_ID';
  var Tecform = FormApp.openById(TecformID);
  var TecformUrl = Tecform.getPublishedUrl();
  var response = UrlFetchApp.fetch(TecformUrl);
  var formHtml = response.getContentText();

  var htmlApp = HtmlService
      .createHtmlOutput(formHtml)
      .setTitle('Tec-Response')
      .setWidth(500) 
      .setHeight(450);

  SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}

したがって、このコードは約 2 ~ 3 週間前までは完全に機能していましたが (正確には言えません)、それ以降は、google-apps にログインするためのログイン プロンプトが表示されるか、サーバー エラーが返されます。フォームは公開に設定されているため、ログインする必要はありません。最後に、ログインも機能しません。Cookie を許可する必要があるためです (ブラウザの設定で許可されています。html サービスは Cookie へのログインを処理できないと思います)。

では、スクリプトを再び機能させるにはどうすればよいでしょうか。私は何も変更していませんが、Mogsdad からの回答のコードと同じです。

4

1 に答える 1

1

HtmlService の変更に引っかかりました。2013 年 5 月に発表されたように、Google はスクリプトで使用される ECMA サンドボックス モードのデフォルトを変更しています。

幸いなことに、NATIVE サンドボックス モードを指定するだけで、フォームの埋め込みが機能を再開します。

  var htmlApp = HtmlService
      .createHtmlOutput(formHtml)
      .setSandboxMode(HtmlService.SandboxMode.NATIVE)
      .setTitle('Tec-problem')
      .setWidth(500) 
      .setHeight(450);
于 2013-08-29T16:27:47.777 に答える