Google表格脚本

时间:2019-02-07 20:52:03

标签: javascript google-apps-script google-sheets youtube-data-api

JS的新手。该代码查看YouTube ID“ A2”,并提供视频标题和总观看次数。此功能适用于“ A2”中列出的一个ID,但我无法使其与范围配合使用。

我尝试调整范围并使用行和列格式。

例如,将单元格扩展到第7行,如下所示,该错误提示“范围高度不正确,为1,但应为6(第7行,文件“代码”)”

function getVideoInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var vid = sheet.getRange("A2:A7").getValue();
  var data = YouTube.Videos.list('snippet, statistics', {id: vid});
  var item = data.items[0];
  var info = [item.snippet.title, item.statistics.viewCount];
  sheet.getRange("B2:C7").setValues([info]);
}

我还尝试将数据项调整为[0]以外的数字

1 个答案:

答案 0 :(得分:0)

  • 您要从放在“ A2:A7”中的ID中检索snippet.titlestatistics.viewCount的值,并将结果放入“ B2:C7”。
  • 当脚本用作var vid = sheet.getRange("A2").getValue()sheet.getRange("B2:C2").setValues([info])时,它可以正常工作。

如果我的理解是正确的,那么该修改如何?

修改点:

  • sheet.getRange("A2:A7").getValue()仅检索值“ A2”。
  • 在当前脚本中,运行sheet.getRange("B2:C7").setValues([info])时,它将尝试将1行2列的值放入6行2列的单元格中。这样,就会发生这种错误。

需要从单元格“ A2:A7”中检索值,并将6行和2列的值放入“ B2:C7”中。

修改后的脚本:

请按如下所示修改脚本。

function getVideoInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var vid = sheet.getRange("A2:A7").getValues();
  var info = vid.map(function(e) {
    var data = YouTube.Videos.list('snippet, statistics', {id: e});
    var item = data.items[0];
    return [item.snippet.title, item.statistics.viewCount];
  });
  sheet.getRange("B2:C7").setValues(info);
}

参考文献:

如果我误解了您的问题,请告诉我。我想修改它。

Edit1:

  

如果我更改脚本以查看A:A范围内的所有单元格,而在A:A范围内的单元格中没有值,则会收到以下错误。 TypeError: Cannot read property "snippet" from undefined. (line 7, file "Code")。我希望能够将单元格A设为空白:仍然运行脚本。

关于your new question,当“ A”列中有空单元格时,您想将空值放入“ B”和“ C”列中。我这样理解。这样,我修改了我的脚本。

修改后的脚本:

function getVideoInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var vid = sheet.getRange("A:A").getValues(); // Modified
  var info = vid.map(function(e) {
    if (e) { // Added
      var data = YouTube.Videos.list('snippet, statistics', {id: e});
      var item = data.items[0];
      return [item.snippet.title, item.statistics.viewCount];
    }
    return ["",""]; // Added
  });
  sheet.getRange("B:C").setValues(info); // Modified
}

Edit2:

  

TypeError: Cannot read property "snippet" from undefined. (line 8, file "Code")中有ID但A2:A7中没有ID时,出现以下错误A8

根据do not have a value in a cell in range A:A I get the following error.,我了解到“ A”列中有几个空单元格。但是从您的评论来看,我们认为问题在于电池的价值。因此,当var data = YouTube.Videos.list('snippet, statistics', {id: e})发生错误时,我修改了脚本以忽略该错误。

修改后的脚本:

function getVideoInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var vid = sheet.getRange("A:A").getValues(); // Modified
  var info = vid.map(function(e) {
    if (e) {
      try { // Added
        var data = YouTube.Videos.list('snippet, statistics', {id: e});
        var item = data.items[0];
        return [item.snippet.title, item.statistics.viewCount];
      } catch(er) { // Added
        return ["",""];
      }
    }
    return ["",""];
  });
  sheet.getRange("B:C").setValues(info); // Modified
}