2017-11-02 8 views
1

状況は、クリックしたユーザーのGoogleドライブにスプレッドシートのコピーを作成して開くWebアプリとして公開されている。コピーされたシートのボタンを使用してリンクされたフォームを開く

このスプレッドシートには、正しくコピーされたフォームが添付されています。私が望むのは、ボタンをクリックすると、フォームがクリックされたときと同じ方法でgoogleフォームが起動されるというボタン(スクリプトが添付された図面)を表示することです。

私は次のように(別のSO質問からこれを得た)フォームIDを取得しようとした:

var formUrl = SpreadsheetApp.getActiveSpreadsheet().getFormUrl(); 
var formID = formUrl.match(/[-\w]{25,}/); 

私は、これは、フォームのライブバージョンのためのIDであることを信じていない、また私が働くことができますしかし、このIDを動作させるURLに入れてしまいます。 (これは、フォーム>フォームをクリックしてフォームにアクセスするフォームのIDです)

答えて

1

図面から直接リンクすることはできませんが、Apps Scriptを使用して、フォームへのリンク。ここにサンプルがあります:

function showForm() { 
    // Helper function gets the live URL for the form 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var form = sheet.getFormUrl(); 

    showAnchor(form, "Google Form"); 
} 

function showAnchor(url, name) { 
    // Build some simple HTML and display 
    var html = '<html><body><a href="'+url+'" target="blank" onclick="google.script.host.close()">'+name+'</a></body></html>'; 
    var ui = HtmlService.createHtmlOutput(html); 
    SpreadsheetApp.getUi().showModelessDialog(ui,"demo"); 
} 

もう1つのオプションは、フォームの「ボタン」として機能するスタイリングセルを含めることです。それはクリックするポップアップを表示する余分なステップを削除します。これは、動的式を書くのと同じくらい簡単です。

function showForm() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var form = sheet.getFormUrl(); 

    sheet.getSheetByName('Sheet1').getRange(2,1).setValue('=hyperlink("' + form + '", "Open Form")'); 
} 
関連する問題