Skip to content

Commit 6b96988

Browse files
committed
feat: Import smartchip sample
1 parent 25dad78 commit 6b96988

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"scriptId":"14tK6PD4C624ivRyGk-S6eYCbYJnDfA24xeP0Jhb1U8sPgAvZXeZm5gpb"}
+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
function getBook(id) {
2+
const apiKey = 'YOUR_API_KEY'; // Replace with your API key
3+
const apiEndpoint = `https://www.googleapis.com/books/v1/volumes/${id}?key=${apiKey}&country=US`;
4+
const response = UrlFetchApp.fetch(apiEndpoint);
5+
return JSON.parse(response);
6+
}
7+
8+
function bookLinkPreview(event) {
9+
if (event.docs.matchedUrl.url) {
10+
const segments = event.docs.matchedUrl.url.split('/');
11+
const volumeID = segments[segments.length - 1];
12+
13+
const bookData = getBook(volumeID);
14+
const bookTitle = bookData.volumeInfo.title;
15+
const bookDescription = bookData.volumeInfo.description;
16+
const bookImage = bookData.volumeInfo.imageLinks.small;
17+
const bookAuthors = bookData.volumeInfo.authors;
18+
const bookPageCount = bookData.volumeInfo.pageCount;
19+
20+
const previewHeader = CardService.newCardHeader()
21+
.setSubtitle('By ' + bookAuthors)
22+
.setTitle(bookTitle);
23+
24+
const previewPages = CardService.newDecoratedText()
25+
.setTopLabel('Page count')
26+
.setText(bookPageCount);
27+
28+
const previewDescription = CardService.newDecoratedText()
29+
.setTopLabel('About this book')
30+
.setText(bookDescription).setWrapText(true);
31+
32+
const previewImage = CardService.newImage()
33+
.setAltText('Image of book cover')
34+
.setImageUrl(bookImage);
35+
36+
const buttonBook = CardService.newTextButton()
37+
.setText('View book')
38+
.setOpenLink(CardService.newOpenLink()
39+
.setUrl(event.docs.matchedUrl.url));
40+
41+
const cardSectionBook = CardService.newCardSection()
42+
.addWidget(previewImage)
43+
.addWidget(previewPages)
44+
.addWidget(CardService.newDivider())
45+
.addWidget(previewDescription)
46+
.addWidget(buttonBook);
47+
48+
return CardService.newCardBuilder()
49+
.setHeader(previewHeader)
50+
.addSection(cardSectionBook)
51+
.build();
52+
}
53+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"timeZone": "America/Los_Angeles",
3+
"exceptionLogging": "STACKDRIVER",
4+
"runtimeVersion": "V8",
5+
"oauthScopes": [
6+
"https://www.googleapis.com/auth/workspace.linkpreview",
7+
"https://www.googleapis.com/auth/script.external_request"
8+
],
9+
"addOns": {
10+
"common": {
11+
"name": "Preview Books Add-on",
12+
"logoUrl": "https://developers.google.com/workspace/add-ons/images/library-icon.png",
13+
"layoutProperties": {
14+
"primaryColor": "#dd4b39"
15+
}
16+
},
17+
"docs": {
18+
"linkPreviewTriggers": [
19+
{
20+
"runFunction": "bookLinkPreview",
21+
"patterns": [
22+
{
23+
"hostPattern": "*.google.*",
24+
"pathPrefix": "books"
25+
},
26+
{
27+
"hostPattern": "*.google.*",
28+
"pathPrefix": "books/edition"
29+
}
30+
],
31+
"labelText": "Book",
32+
"logoUrl": "https://developers.google.com/workspace/add-ons/images/book-icon.png",
33+
"localizedLabelText": {
34+
"es": "Libros"
35+
}
36+
}
37+
]
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)