【发布时间】:2021-01-15 23:27:30
【问题描述】:
第一次在谷歌应用脚本中编码,所以我提前为我的无知道歉。
我在 Digital Inspiration 上看到了这个很棒的脚本,但我很难将它写到工作表上。
我创建了一个包含以下 3 列数据的 Google 表格: 标题|作者|isbn 对于 isbns,我在 C2 和 C3 中有 2 个值:9781471178412 和 9780669397666
在 Google App Scripts 中,我使用 Google Books API 来提取书籍的标题,但一直对如何将 Google API 中的“标题”值插入我的 isbn 的 Google Sheet 感到困惑。它记录了正确的标题,但是当我在函数“fillInTheBlanks”中调用它时,它说它是未定义的。
非常感谢您能提供给这个新手的任何指导!谢谢!
function getBookDetails(isbn) {
var ISBN_COLUMN = 2;
var dataRange = SpreadsheetApp.getActiveSpreadsheet()
.getDataRange();
var bookValues = dataRange.getValues();
for(var row = 1; row < bookValues.length; row++){
var isbn = bookValues[row][ISBN_COLUMN];
var url = "https://www.googleapis.com/books/v1/volumes?country=US&q=isbn:" + isbn;
var response = UrlFetchApp.fetch(url);
var results = JSON.parse(response);
if (results.totalItems) {
// There'll be only 1 book per ISBN
var book = results.items[0];
var title = (book["volumeInfo"]["title"]);
var authors = (book["volumeInfo"]["authors"]);
// For debugging
Logger.log(book);
Logger.log(title);
Logger.log(authors);
}
}
}
function fillInTheBlanks(){
var TITLE_COLUMN = 0;
var AUTHOR_COLUMN = 1;
var ISBN_COLUMN = 2;
var dataRange = SpreadsheetApp.getActiveSpreadsheet()
.getDataRange();
var bookValues = dataRange.getValues();
for(var row = 1; row < bookValues.length; row++){
var isbn = bookValues[row][ISBN_COLUMN];
var title1 = bookValues[row][TITLE_COLUMN];
var author1 = bookValues[row][AUTHOR_COLUMN];
if(isbn != "" && (title1 === "" || author1 === "") ){
var runresults = getBookDetails(isbn);
if(title1 === "" && runresults.title){
bookValues[row][TITLE_COLUMN] = runresults.title;
}
}
}
dataRange.setValues(bookValues);
}
【问题讨论】:
标签: json scripting undefined isbn