我想创建一个简单的书签,它抓取当前网页“location.ref”的网址并将其保存在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);
}
我将其作为webapp发布。我写了书签:
<a href="javascript:(
function(){
alert(window.open('https://script.google.com/macros/s/<MYWEBAPP>/exec?url='+encodeURIComponent(location.href), '_self'));
}
)();">
BOOKMARK
</a>
到目前为止一切顺利。它实际上在我点击书签时有效,它会抓取当前网页的URL并将其保存在我的电子表格中。但是,webapp会返回一个文本响应,并且书签会显示文本,导致我离开当前的网站。
有没有办法忽略回复? GAS webapp脚本要求我使用必须返回的doGet()。有没有办法不从GAS脚本返回任何内容?或者,有没有办法我可以使用其他一些调用来替换window.open来调用webapp来允许我将响应存储在变量中并忽略它?
答案 0 :(得分:1)
我知道已经一年多了,但我一直在努力做到这一点。我花了一段时间才弄明白,但这有效。需要 1 秒的延迟才能让脚本完成加载。
javascript:(function(){
my_window=window.open('https://script.google.com/macros/s/<MYWEBAPP>/exec?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title));
(window.setTimeout(function(){my_window.close();},1000));
void(0);
})();
答案 1 :(得分:0)
您可以考虑使用XMLHttpRequest发送HTTP GET请求,而不是使用window.open。
请参阅here其使用情况。
答案 2 :(得分:0)
将_self
更改为其他内容,例如bookmarker
它将在新窗口或标签中打开。如果您在许多页面上使用它,如果它们保持相同的名称,它们将重复使用相同的选项卡。