如何使用脚本,JSON和图书API在表格中插入ISBN的标题值



第一次用Google App Scripts编码,所以我提前为我的无知道歉。

我在Digital Inspiration上看到了这个很棒的脚本,但是我很难把它写在纸上。

我已经创建了一个谷歌表与以下3列的数据:标题作者| | isbn我在C2和C3中为isbns设置了两个值:9781471178412 &9780669397666

在Google App Scripts中,我正在使用Google Books API来为书籍拉标题,但一直在如何插入"标题"上挂起电话。值从谷歌的API到谷歌表为我的isbn。它正在记录正确的标题但是当我在函数&;fillintheblank&;中调用它时,它说它是未定义的。

任何指导您可以提供这个新手是非常感激!谢谢你!

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/App脚本工作。

function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Book-list')
.addItem('GoogleDataPull', 'fillInTheBlanks')
.addSeparator()
.addItem('OpenLibraryDataPull', 'fillInTheBlanksOL')
.addToUi();
}
function getBookDetails(isbn) {
var url = "https://www.googleapis.com/books/v1/volumes?country=US&q=isbn:" + isbn;
var response = UrlFetchApp.fetch(url);
var bookData = JSON.parse(response);
if (bookData.totalItems) {
// There'll be only 1 book per ISBN
var book = bookData.items[0];
var title = (book["volumeInfo"]["title"]);

// For debugging
Logger.log(book);
Logger.log(title);
return title;
}
}
function fillInTheBlanks(){
var TITLE_COLUMN = 0;
var ISBN_COLUMN = 1;


var dataRange = SpreadsheetApp.getActiveSpreadsheet();
var sheet = dataRange.getSheets()[0];
// This represents ALL the data
var range = sheet.getDataRange();
var bookValues = range.getValues();

// 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];

if(isbn != "" && title1 === "" ){
// var bookData = getBookDetails(isbn);


if(title1 === "" && getBookDetails(isbn)){
bookValues[row][TITLE_COLUMN] = getBookDetails(isbn); 
range.setValues(bookValues); 

}
}

}
//dataRange.setValues(bookValues);   
}

最新更新