我对编码非常新,所以请原谅我所犯的新手错误。任何和所有的帮助表示赞赏!
使用gwt API,我能够将图像从电影数据库中拉出并将它们插入电子表格中,但我使用的过程似乎不必要地费力。
以下是我用来从图像数据库中提取图像URL的功能:
function kwURL (keyword){
var response = UrlFetchApp.fetch("https://www.flickr.com/search/?q="+keyword)
var content=response.getContentText();
var length = content.length;
var count=0;
for (var i=0;i<=length-3;i++){
if(content.substring(i,5+i).equals("src=\"")){
var start=i+5;
count+=1
if(count==4){
for (var e=start;e<length-1;e++){
if (content.substring(e,e+1).equals("\"")){
var end=e
break;
}
}
}
if(count==4){break;}
}
}
Logger.log(content.substring(start,end));
return content.substring(start,end):
}
count var只选择html页面上的第四个图像,因为前三个是徽标和类似的东西。
以下是从第一列中提取单词并在Flickr数据库中搜索关键字并将找到的图像插入第二列的代码:
function onChange(){
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
for (var i = 2; i <= numRows + 2; i++) {
var keyword =sheet.getRange(i, 1).getValue();
if(keyword!=""){sheet.insertImage(kwURL(keyword), 2, i);}
}
}
我找不到任何其他程序试图在我在互联网上搜索的Google应用程序脚本文档或程序中做同样的事情,所以希望有人来清理我从头开始制作的这个乱码。
答案 0 :(得分:0)
屏幕抓取(基本上就是你在这里所做的)应该只作为最后的手段使用。对您正在获取的网页进行的任何更改都可能会破坏您的代码。解决问题的更好方法是使用为第三方开发人员提供的公开API,以标准格式请求某些数据。看起来Flickr提供了这样的结果:https://www.flickr.com/services/api/flickr.photos.search.html(注意:我没有使用此API的经验。我发现它在谷歌搜索快速搜索后存在)。
如果您获取正确的API资源,则应该返回一个JSON对象,其中包含直接指向图像的URL列表。没有更奇怪的for()
循环,不再是丑陋的(if magicNumber == 4)
或if (magicString == '\"src\"')
代码。此时将这些图像插入电子表格应该非常简单。