2016-08-31 11 views
0

私の四角形のウェブサイトでレディメイドコードで遊んでいます。 readymade google appsスクリプトを設定して、Googleドライブにファイルをアップロードする方法を見つけました。それは、アプリケーションを公開することによって与えられたURL上で正常に動作します。スクエアスペースページからgoogle appsスクリプトを呼び出す方法は?

しかし私は、私の四角形のページ上のコードの注入によって、readymadeのソリューションからhtmlコードを実装しましたが、明らかに動作しません。おそらく、アプリを公開して生成された特定のURLにつながる情報はスクリプトコードにはありません。

これは、今ここで私はsquarespaceに注入するために使用するコード(私はGoogleのアプリスクリプトサーバ側に私を接続しているいくつかのコードが必要)

<div align="center"> 
    <table width="459" border="0"> 
    <tbody> 
     <tr> 
     <td width="462"><div align="center"> 
      <hr> 
     </div> 
      <form id="myForm" align="center"> 
      <input type="text" name="myName" placeholder="Your name.."> 
      <input type="file" name="myFile"> 
      <input type="submit" value="Upload File" 
      onclick="this.value='Uploading..'; 
        google.script.run.withSuccessHandler(fileUploaded) 
        .uploadFiles(this.parentNode); 
        return false;"> 
      </form> 
      <div id="output"></div> 
      <script> 
    function fileUploaded(status) { 
     document.getElementById('myForm').style.display = 'none'; 
     document.getElementById('output').innerHTML = status; 
    } 
      </script> 
     <style> 
input { display:block; margin: 20px; } 

      </style> 
     <hr></td> 
     </tr> 
    </tbody> 
    </table> 
    <h3>&nbsp;</h3> 
    <p>&nbsp;</p> 
</div> 

で、サーバー側のコードは次のようになります。

function doGet(e) { 
    return HtmlService.createHtmlOutputFromFile('form.html'); 

} 

function uploadFiles(form) { 

    try { 

    var dropbox = "RHT"; 
    var folder, folders = DriveApp.getFoldersByName(dropbox); 

    if (folders.hasNext()) { 
     folder = folders.next(); 
    } else { 
     folder = DriveApp.createFolder(dropbox); 
    } 

    var blob = form.myFile;  
    var file = folder.createFile(blob);  
    file.setDescription("Uploaded by " + form.myName); 

    return "File uploaded successfully " + file.getUrl(); 

    } catch (error) { 

    return error.toString(); 
    } 

} 

これを機能させるために追加するには、これを非常に簡単なコードにする必要があります。

ありがとうございました

答えて

0

私はこの同じ問題があります。 Googleは、ドメイン外のiframeなどでスクリプトを使用することをGoogleがブロックしているという問題があると私は信じています。私の現在のソリューションは、自動的にGoogleのスクリプトにユーザーをリダイレクトしますhttp://www.squareguru.com/form-redirectから得られたコードを挿入し、

  • は、[詳細設定]タブで、「フィールド」
  • に必要な情報を入力しますSquarespace

  • で をフォームを作成

    1. にあります。コードは次のようになります。私のGoogleのスクリプト "server.gs" ページで

      <meta http-equiv="refresh" content="0; url=https://script.google.com/macros/s/etc"> <script> window.location.href = 'https://script.google.com/macros/s/etc'; window.location.assign('https://script.google.com/macros/s/etc'); </script>

    2. 誰もがGoogle Appsスクリプトを別のURLにリダイレクト持っている方法を知っている場合は、私はちょうどreturn "File uploaded successfully " + file.getUrl();

    3. return "File uploaded successfully. Please click the back button in your browser to return to Site Name";から

    ラインを変更「ファイルが正常にアップロードされました」と表示されずに完了したら、アップロードが正常に完了したことを私のサイトのページにリダイレクトして、他のブログなどを見続けることができます。

    私はjotform.comをテストしています.jotform.comでは、自分のフォームでGoogleドライブにファイルをアップロードすることもできますが、無料のティアがあなたのニーズをカバーしていない限り、毎月の料金を請求します。次に、Squarespaceにフォームを挿入するコードを与えます。

    希望しました。 Google Apps Scriptの完了後に他のURLにリダイレクトするアイデアがある場合は、教えてください。

    編集:これは<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>が、スクリプトを実行できるように、詳細>コード注入>ヘッダーに配置する必要があると思います。

    0

    これで、Googleスクリプトの最初の数行を次のように変更することができます。

    function doGet() { 
        return HtmlService.createHtmlOutputFromFile('index.html').setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); 
    } 
    

    次に、あなたはSquarespaceにコードブロックとiframeを追加するか、または私は私はPOST-SUBMIT HTMLのセクションでは、フォームブロックの[詳細設定]タブの下に位置しています(ユーザーが、最初に私のフォームに必要事項を記入スクリプトを使用してコンテンツをアップロードすることができます)このコードを使用しますが、幅などを調整できます。

    <iframe src="https://YourPublishedGoogleScriptURLhere"width="625"height="361"frameborder="0"></iframe> 
    
    関連する問題