用于在 Google 电子表格中保存 URL 的书签

tag*_*s07 5 post bookmarklet google-apps-script

我想创建一个简单的书签,它获取当前网页“location.ref”的 URL 并将其保存在 Google 电子表格中。保存后,我想留在当前网页上。

我所知道的写入 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);
}
Run Code Online (Sandbox Code Playgroud)

我将其发布为 webapp。我写了书签:

<a href="javascript:(

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

   }

  )();"> 

BOOKMARK

</a>
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。当我单击书签时,它实际上可以工作,它会抓取当前网页的 URL 并将其保存在我的电子表格中。但是,webapp 返回一个文本响应,并且书签显示文本导致我离开我当前的网站。

有没有办法忽略响应?GAS webapp 脚本要求我使用必须返回某些内容的 doGet()。有没有办法不从 GAS 脚本返回任何内容?或者,有没有一种方法可以使用其他调用来替换 window.open 来调用 webapp,这将允许我将响应存储在变量中并忽略它?

pra*_*sun 1

您可以考虑使用 XMLHttpRequest 发送 HTTP GET 请求,而不是使用 window.open。

有关其用法,请参阅此处。