как изменить код с onOpen с меню на onEdit - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь изменить следующий код, чтобы он работал с 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);
}
...