【问题标题】:"Attribute provided with no value" error - UrlFetchApp“提供的属性没有值”错误 - UrlFetchApp
【发布时间】:2016-09-29 23:51:15
【问题描述】:

我有以下错误:

提供的属性没有值

错误来自行:

var content = UrlFetchApp.fetch(url).getContentText();

这是我的代码:

function getArray() {
  var newData = new Array();
  var sheet = SpreadsheetApp.openById('my_id').getSheetByName('Sheet2');
  var urls = sheet.getRange("A1:A").getValues();
  var fromText = '<span class="nb-shares">';
  var toText = '</span>';

  for(var i = 0; i < urls.length; i++){
    var url = urls[i];
    var content = UrlFetchApp.fetch(url).getContentText();
    var scraped = Parser
                   .data(content)
                   .from(fromText)
                   .to(toText)
                   .build();
         newData.push([scraped]);
  }

  var sheet2 = SpreadsheetApp.openById('my_id').getSheetByName('Sheet5'); 
  sheet2.getRange(1, 1, newData.length, newData[1].length).setValues(newData);
}

【问题讨论】:

  • 错误来自哪一行?查看 View 菜单下的 Execution Transcript。在 scraped 行之后放置一个 'Logger.log('scraped: ' + scraped)` 语句,然后运行代码并查看日志。 Apps 脚本中没有 Parser 类。那是什么?
  • Attribute provided with no value: url (line 10, file "Code")。这是第 10 行:var content = UrlFetchApp.fetch(url).getContentText(); 我想我与我的 urls.length 无关...
  • 您可以运行 Logger.log(url) 并查看您是否获得了有效的 URL。

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


【解决方案1】:

getValues() 方法返回一个二维数组。您没有从内部数组中获取值。

目前:

var url = urls[i];

应该是:

var url = urls[i][0];

您需要为内部数组添加[0] 索引。

【讨论】:

    【解决方案2】:

    如果您怀疑 urls 不是一个正确的数组,那么您可以在定义它之后使用 console.log(urls) 并查看它是一个数组还是其他东西。

    或者像这样测试 console.log(Array.isArray(urls))

    【讨论】:

    • Google 的版本是 Logger.log()
    猜你喜欢
    • 2018-09-16
    • 2018-03-05
    • 2018-04-24
    • 2018-07-17
    • 2022-11-20
    • 2011-05-14
    • 2013-06-21
    • 2021-01-21
    相关资源
    最近更新 更多