谁能提供有关如何提高此代码效率的帮助?

时间:2014-04-24 02:48:10

标签: javascript google-apps-script google-sheets

我对编码非常新,所以请原谅我所犯的新手错误。任何和所有的帮助表示赞赏!

使用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应用程序脚本文档或程序中做同样的事情,所以希望有人来清理我从头开始制作的这个乱码。

1 个答案:

答案 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\"')代码。此时将这些图像插入电子表格应该非常简单。