曾經在 Gg / App 從Google Spreadsheets建立查詢ISBN的AppSheet APP
以及 Gg / 從Google Spreadsheets建立查詢ISBN的AppSheet APP 版本2
結合Google AppSheet簡易製作查詢ISBN App
原理是透過AppSheet掃描書籍ISBN條碼、寫入Google Sheet中
再透過Google Apps Script設定當文件被編輯時,觸發查詢的程式,將抓取到的書籍資料寫入Google Sheet
而因為AppSheet的資料是基於相同的Google Sheet
所以重整之後就可以顯示書籍資料
整體流程可以分為三個步驟
1.建立Google Sheet工作表,設定需要的資料欄位,除了是儲存抓取的資料之外,同時也是AppSheet的資料架構
2.在Google Sheet擴充功能新增Google Apps Script程式碼,並且設定觸發條件-當文件被編輯時觸發程式
3.在Google Sheet擴充功能新增AppSheet,設定介面與調整資料表設定
當初查詢書籍資料的方式是爬取全國新書網的內容
而現在這個練習修改自彰化一整天在2021年發布的教學範例
【Appsheet教學】如何在appsheet使用掃描ISBN就自動出現圖書相關資訊
其中最大的修改是爬蟲抓取資料的程式碼
這是因為用來查詢書籍資料的網站改版
所以配合目前網站的DOM架構調整抓取的內容/位置
而跟我原本方式的差異是這個範例沒有解析Html DOM
純粹把抓回來的Html當成文字資料來處理
透過javascript的indexOf()、substring() 擷取需要的文字資料
然後透過正則表示法配合replace()除去Html標籤與多餘的空格
以下說明三個步驟的內容
1.建立Google Sheet工作表,設定需要的資料欄位,除了是儲存抓取的資料之外,同時也是AppSheet的資料架構
根據網站資料設定要抓取的資料,建立sheet欄位
主要有:ISBN 書名 出版社 作者 出版日期,利用 輸入日期作為唯一值(KEY)
2.在Google Sheet擴充功能新增Google Apps Script程式碼,並且設定觸發條件-當文件被編輯時觸發程式
程式碼主要修改如下
#18
var url = “https://findbook.com.tw/”+ isbn;
#28 增加判斷式,”沒有符合查詢條件的圖書!!”
#39
var title=stripHTML(get_content(html,”<h1 id=\”lblMessage\” style=\”display: inline; color: Red\”>”,”</h1>”));
#45
var publishDate=stripHTML(get_content(html,”出版日期:”,”</span><“));
#48
var publisherName=stripHTML(get_content(html,”出版社:”,”</a>”));
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
function bestdaylong_read_isbn() { var sheet= SpreadsheetApp.getActiveSpreadsheet(); //var isbn="9789574429608"; var html="";//儲存抓回的內容 //取得目前所在的列數 //var lastrow = sheet.getLastRow(); //取得目前所在列數 var lastrow=sheet.getActiveRange().getRow(); var isbn=sheet.getRange("a" + lastrow).getValue(); var title=sheet.getRange("b" + lastrow).getValue(); var url = "https://findbook.com.tw/"+ isbn; if(isbn!="" && title=="") { Logger.log(url); var response= UrlFetchApp.fetch(url); html=response.getContentText(); var noData = stripHTML(get_content(html,"<td background=\"/images/up_bar.gif\" style=\"vertical-align: middle; height: 25px\">","</td>")); noData = noData.split(';')[1].trim(); Logger.log(noData); if(noData =="沒有符合查詢條件的圖書!!") { sheet.getRange("B"+lastrow).setValue(noData); sheet.getRange("F"+lastrow).setValue(new Date()); } else{ // var title=stripHTML(get_content(html,"<h1 id=\"lblMessage\" style=\"display: inline; color: Red\">","</h1>")); Logger.log(title); var author=stripHTML(get_content(html,"作者:","</a>")); Logger.log(author); var publishDate=stripHTML(get_content(html,"出版日期:","</span><")); Logger.log(publishDate); var publisherName=stripHTML(get_content(html,"出版社:","</a>")); Logger.log(publisherName); sheet.getRange("B"+lastrow).setValue(title); sheet.getRange("C"+lastrow).setValue(publisherName); sheet.getRange("D"+lastrow).setValue(author); sheet.getRange("E"+lastrow).setValue(publishDate); sheet.getRange("F"+lastrow).setValue(new Date()); // } } } |
3.在Google Sheet擴充功能新增AppSheet,設定介面與調整資料表設定
將預設的以”_RowNumber”為KEY,改為以”輸入日期”為KEY
ISBN不顯示千位數分隔符號
編輯ISBN欄位
取消原本的勾取
已經沒有顯示千位數分隔符號
基本上這樣就可以完成一個簡易查詢ISBN獲取書籍資料的App了
並且資料是寫在Google Sheet裡,所以也可以直接進行資料的整理