Я пытаюсь изменить следующий код, чтобы он работал с onEdit вместо onOpen и создавал меню. Я просто хочу, чтобы информация автоматически заполнялась, когда ISBN вводится в столбец "A".
s = SpreadsheetApp.getActiveSheet();
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Book Menu')
.addItem('Get Book Details', 'getBookDetails')
.addToUi();
}
function getBookDetails(isbn) {
// Query the book database by ISBN code.
activeCell = s.getActiveCell();
value = activeCell.getValue();
isbn = isbn || value.toString(); // Steve Jobs book
// Not a valid ISBN if not 13 or 10 digits long.
if(isbn.match(/(\d{13}|\d{10})/) == null){
throw new Error( "Not a valid ISBN: " + isbn);
}
var url = "https://www.googleapis.com/books/v1/volumes?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 subtitle = (book["volumeInfo"]["subtitle"]) || "*No Subtitle";
var authors = (book["volumeInfo"]["authors"]);
var printType = (book["volumeInfo"]["printType"]);
var pageCount = (book["volumeInfo"]["pageCount"]);
var publisher = (book["volumeInfo"]["publisher"]);
var publishedDate = (book["volumeInfo"]["publishedDate"]);
var webReaderLink = (book["accessInfo"]["webReaderLink"]);
//Logger.log(book);
results = [[title, subtitle, authors, printType, pageCount, publisher, publishedDate, webReaderLink]];
}else{
results = [["-", "-", "-", "-", "-", "-", "-", "-"]];
}
s.getRange(activeCell.getRow(), activeCell.getColumn() + 1, 1, results[0].length).setValues(results);
}