6

現在の Web ページ「location.ref」の URL を取得して Google スプレッドシートに保存する、単純なブックマークレットを作成したいと考えています。保存した後、現在の Web ページにとどまりたい。

私が知っている唯一の Google スプレッドシートへの書き込み方法は、Google App Script を使用することです。そこで、まさにそれを行う簡単なスクリプトを作成しました。

function doGet(request) {
  var ss = SpreadsheetApp.openByUrl( "https://docs.google.com/spreadsheet/ccc?key=<MY-SPREADSHEET-ID>");

 var sheet = ss.getSheets()[0];
 var headers = ["Timestamp", "url"];

 var nextRow = sheet.getLastRow(); 
 var cell = sheet.getRange('a1');
 var col = 0;
 for (i in headers){
    if (headers[i] == "Timestamp"){
       val = new Date();
    } else {
       val = request.parameter[headers[i]]; 
    }
    cell.offset(nextRow, col).setValue(val);
    col++;
 }



   return ContentService.createTextOutput(request.parameter.url)
   .setMimeType(ContentService.MimeType.TEXT);
}

これをwebappとして公開しました。私はブックマークレットを書きました:

<a href="javascript:(

   function(){ 
     alert(window.open('https://script.google.com/macros/s/<MYWEBAPP>/exec?url='+encodeURIComponent(location.href), '_self')); 

   }

  )();"> 

BOOKMARK

</a>

ここまでは順調ですね。ブックマークレットをクリックすると実際に機能し、現在の Web ページの URL を取得してスプレッドシートに保存します。しかし、その後、webapp がテキスト応答を返し、ブックマークレットがテキストを表示して、現在の Web サイトから離れてしまいます。

応答を無視する方法はありますか? GAS webapp スクリプトでは、何かを返さなければならない doGet() を使用する必要があります。GASスクリプトから何も返さない方法はありますか? または、他の呼び出しを使用して window.open を置き換えて、応答を変数に保存して無視できるようにする webapp を呼び出す方法はありますか?

4

3 に答える 3

1

window.open を使用する代わりに、XMLHttpRequest を使用して HTTP GET 要求を送信することを検討してください。

使い方はこちらを参考にしてください。

于 2013-07-09T13:53:45.817 に答える