第一次在谷歌应用程序脚本编码,所以我为我的无知提前道歉。
我看到这个伟大的脚本上的数字灵感,但我难倒试图让它写的表。
我已经创建了一个Google工作表,包含以下3列数据:标题|作者|对于isbn,isbn I在C2和C3中具有2个值:9781471178412和9780669397666
在Google App Scripts中,我使用Google Books API来提取书名,但一直在纠结如何将Google API中的“title”值插入到我的书号的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);
}
1条答案
按热度按时间bprjcwpo1#
我知道我的代码不像大多数人那样优雅,但是我很高兴能够让它在我第一次尝试JSON/应用程序脚本时工作。