[英]can anyone offer help on how to make this code more efficient?
我对编码非常陌生,因此请原谅我犯的一个新手错误。 任何和所有帮助表示赞赏!
使用gwt API,我能够从flicks数据库中提取图像并将其插入到电子表格中,但是我使用的过程似乎是不必要的艰苦工作。
这是我用来从数据库中提取图像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应用脚本文档中找不到其他尝试执行相同操作的程序,或者在互联网上搜索过的程序,因此希望有人清理了我从头开始编写的凌乱代码。
屏幕抓取(本质上就是您在这里所做的事情)仅应作为最后的手段。 您正在获取的网页上的任何更改都可能会破坏您的代码。 解决问题的一种更好的方法是使用为第三方开发人员提供的公共可用API,以标准格式请求一些数据。 看起来Flickr只是提供了以下内容: https : //www.flickr.com/services/api/flickr.photos.search.html (注意:我没有使用此API的经验。我只是发现它存在一个谷歌快速搜索)。
如果获取适当的API资源,则应获取一个JSON对象,该对象包含直接指向图像的URL列表。 不再有怪异的for()
循环,不再丑陋(if magicNumber == 4)
或if (magicString == '\\"src\\"')
代码。 那时,将这些图像插入电子表格应该非常简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.