@mirrormedia/dual-channel v3.1.4-beta.11
Dual-channel
Dual Channel is a React Component to simultaneously present paragraphs and images in the browser viewport.
Developer Document
Install
Install dependencies:
make check-depDev
make dev-serverBuild
make buildTest Embedded Code with Mock Data
make test-embedded-codeImport React Component
You can import either
Option 1:
import dualChannel from '@twreporter/dual-channel'
const ReactComponent = dualChannel.ReactComponentor
Option 2:
import ReactComponent from '@twreporter/dual-channel/lib/app'Import Sheets Class
import Sheets from '@twreporter/dual-channel/lib/sheets'
const sheets = new Sheets({
spreadsheetId,
keyFile,
targetSheetsId,
})The reaseon why Sheets is not exported in src/index.js is because it imports googleapis.
googleapis imports nodejs specific modules, which makes webpack build failure.
Thus, we need to import Sheets directly from its file.
Data
Reproduce Demo Data
The demo data file is dev/data.json,
and it is generated from this demo spreadsheet.
You can reproduce dev/data.json by the following sample codes.
import Sheets from './src/sheets'
import path from 'path'
import fs from 'fs'
const sheets = new Sheets({
spreadsheetId: '1Ppisv4HTZHYMp95umgCoADNuP1PSkL-t9na-5lRIqSY',
keyFile: path.resolve(__dirname, './spreadsheet-api-key-file.json'),
targetSheetsId: [2143095237, 492967532, 2049208510, 489341977, 1453335111],
})
sheets.getJSONData().then(data => {
fs.writeFileSync(
path.resolve(__dirname, './dev/data.json'),
JSON.stringify(data),
{ encoding: 'utf8' }
)
})In the above sample codes,
you have to download service account and name it as spreadsheet-api-key-file.json.
The service account is used to be authenticated by Google Sheet API.
If you don't have service account, you can create one by
- Go to the Developer Console
- Click your project or create one if you have none
- Click
APIs & Servicestab - Click
Credentialstab - Click
Manage service accountstab - Create service account.
Besides createing service account, you also have to enable Google Sheets API.
- Go to the Developer Console
- Click your project
- Click
APIs & Servicestab - Click
Librarytab - search
Google Sheets API - enable
Google Sheets API
Build Embedded Code
import Sheets from '@twreporter/dual-channel/lib/sheets'
import dualChannelUtils from '@twreporter/dual-channel'
const sheets = new Sheets({
spreadsheetId: '1Ppisv4HTZHYMp95umgCoADNuP1PSkL-t9na-5lRIqSY',
keyFile: path.resolve(__dirname, './spreadsheet-api-key-file.json'),
targetSheetsId: [2143095237, 492967532, 2049208510, 489341977, 1453335111],
})
sheets
.getJSONData()
.then(data => {
return dualChannelUtils.buildEmbeddedCode(data)
})
.then(embeddedCode => {
// You could copy embeddedCode and past it in html file
})Troubleshooting
I got 'Insufficient Permission' or 'The caller does not have permission' error message
- You should check if service account is provided, make sure you give the right file path.
- Make sure you already enable your
Google Sheets APIin your project. - Find your service account email.
$ cat spreadsheet-api-key-file.json | grep client_emailand share your spreadsheet with your service account email.
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago