- 您想从放入“A2:A7”的 ID 中检索
snippet.title 和 statistics.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);
}
参考资料:
如果我误解了您的问题,请告诉我。我想修改它。
编辑1:
如果我更改脚本以查看范围 A:A 中的所有单元格,并且在范围 A:A 中的单元格中没有值,我会收到以下错误。 TypeError: Cannot read property "snippet" from undefined. (line 7, file "Code")。我希望能够在 A: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
}
编辑2:
当A2:A7 中有 ID 但A8 中没有 ID 时,我收到以下错误 TypeError: Cannot read property "snippet" from undefined. (line 8, file "Code")
从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
}