Cara menampilkan Skor Lighthouse di Google Sheets dengan fungsi khusus

Diterbitkan: 2020-11-19

Otomatisasi dan pembelajaran mesin memiliki potensi luar biasa untuk membantu kita semua dalam pemasaran. Tetapi pada saat ini banyak dari alat-alat ini tidak dapat diakses oleh orang-orang yang tidak dapat membuat kode atau yang dapat membuat kode sedikit tetapi tidak terlalu nyaman dengannya.

Yang sering terjadi adalah akhirnya ada satu atau dua orang di kantor yang merasa nyaman dengan menulis dan mengedit kode dan kemudian orang-orang ini membuat skrip dan buku catatan yang dijalankan semua orang. Alur kerjanya terlihat seperti ini:

Saya akan menunjukkan kepada Anda cara sederhana untuk merampingkan alur kerja ini untuk menghapus langkah-langkah di mana orang perlu menjalankan skrip dan memformat hasilnya. Sebaliknya, mereka dapat menjalankan otomatisasi langsung dari dalam Google Spreadsheet.

Contoh yang akan saya tunjukkan adalah untuk fungsi khusus Spreadsheet yang mengembalikan skor Lighthouse untuk URL seperti di gif ini:

Metode yang akan saya tunjukkan bukan satu-satunya cara untuk melakukan ini, tetapi ini menggambarkan teknik yang jauh lebih umum yang dapat digunakan untuk banyak hal, termasuk algoritma pembelajaran mesin.

Ada dua bagian:

  1. Aplikasi Google Cloud Run yang akan melakukan hal-hal rumit (dalam hal ini menjalankan pengujian Lighthouse) dan yang akan menanggapi permintaan HTTP.
  2. Fungsi kustom Appscript yang akan membuat permintaan ke API yang Anda buat di langkah 1 dan mengembalikan hasilnya ke Google Sheet.

Aplikasi yang dijalankan cloud

Cloud Run adalah layanan Google yang mengambil gambar buruh pelabuhan yang Anda berikan dan membuatnya tersedia melalui HTTP. Anda hanya membayar ketika permintaan HTTP dibuat, jadi untuk layanan seperti ini yang tidak digunakan 24/7 sangat murah. Biaya sebenarnya akan bergantung pada seberapa banyak Anda menggunakannya, tetapi saya memperkirakan kurang dari $ 1 per bulan untuk menjalankan ribuan pengujian.

Hal pertama yang perlu kita lakukan adalah membuat image Docker yang akan melakukan analisis Lighthouse saat kita membuat permintaan HTTP padanya. Untungnya bagi kami, ada beberapa dokumentasi yang menunjukkan cara menjalankan audit Lighthouse secara terprogram di Github. Kode yang ditautkan menyimpan analisis ke file daripada mengembalikan respons melalui HTTP, tetapi ini mudah diperbaiki dengan menggabungkan semuanya dalam aplikasi Express seperti ini:

 const express = require('express'); const app = express(); const lighthouse = require('lighthouse'); const chromeLauncher = require('chrome-launcher'); app.get('/', async (req, res) => { // Check that the url query parameter exists if(req.query && req.query.url) { // decode the url const url = decodeURIComponent(req.query.url) const chrome = await chromeLauncher.launch({chromeFlags: ['--headless', '--no-sandbox','--disable-gpu']}); const options = {logLevel: 'info', output: 'html', port: chrome.port}; const runnerResult = await lighthouse(url, options); await chrome.kill(); res.json(runnerResult.lhr) } }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`Listening on port ${port}`); });

Simpan kode ini sebagai index.js.

Kemudian Anda juga akan membutuhkan file bernama package.json yang menjelaskan cara menginstal aplikasi di atas dan Dockerfile sehingga kita dapat menyelesaikan semuanya di Docker. Semua file kode tersedia di Github.

 package.json { "name": "lighthouse-sheets", "description": "Backend API for putting Lighthouse scores in Google sheets", "version": "1.0.0", "author": "Richard Fergie", "license": "MIT", "main": "index.js", "scripts": { "start": "node index.js" }, "dependencies": { "express": "^4.17.1", "lighthouse": "^6.3" }, "devDependencies": {} } Dockerfile # Use the official lightweight Node.js 10 image. # https://hub.docker.com/_/node FROM node:12-slim # Our container needs to have chrome installed to # run the lighthouse tests RUN apt-get update && apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ --no-install-recommends \ && curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \ && echo "deb https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \ && apt-get update && apt-get install -y \ google-chrome-stable \ fontconfig \ fonts-ipafont-gothic \ fonts-wqy-zenhei \ fonts-thai-tlwg \ fonts-kacst \ fonts-symbola \ fonts-noto \ fonts-freefont-ttf \ --no-install-recommends \ && apt-get purge --auto-remove -y curl gnupg \ && rm -rf /var/lib/apt/lists/* # Create and change to the app directory. WORKDIR /usr/src/app # Copy application dependency manifests to the container image. # A wildcard is used to ensure copying both package.json AND package-lock.json (when available). # Copying this first prevents re-running npm install on every code change. COPY package*.json ./ # Install production dependencies. # If you add a package-lock.json, speed your build by switching to 'npm ci'. # RUN npm ci --only=production RUN npm install --only=production # Copy local code to the container image. COPY . ./ # Run the web service on container startup. CMD [ "node", "--unhandled-rejections=strict","index.js" ]

Bangun image buruh pelabuhan dan kemudian Anda dapat menguji sesuatu secara lokal di komputer Anda sendiri seperti ini:

Pertama mulai gambar:

 docker run -p 8080:8080 lighthouse-sheets

Dan kemudian uji untuk melihat apakah itu berhasil:

 curl -v "localhost:8080?url=https%3A%2F%2Fwww.example.com"

Atau kunjungi localhost: 8080? Url = https% 3A% 2F% 2Fwww.example.com di browser Anda. Anda akan melihat banyak JSON.

Langkah selanjutnya adalah memasukkan gambar Anda ke registri Google Container. Bagi saya, ini adalah perintah sederhana:

 docker push gcr.io/MY_PROJECT_ID/lighthouse-sheets

Tetapi Anda mungkin harus mengatur otentikasi buruh pelabuhan terlebih dahulu sebelum Anda dapat melakukan ini. Metode alternatifnya adalah menggunakan Google Cloud Build untuk membuat gambar; ini mungkin bekerja lebih baik untuk Anda jika Anda tidak bisa mendapatkan otentikasi yang berfungsi.

Selanjutnya Anda perlu membuat layanan Cloud Run dengan gambar buruh pelabuhan ini.

Buka Cloud Run dan klik "Buat layanan"

Beri nama dan sesuaikan pengaturan. Anda harus memberi nama layanan Anda dan mengonfigurasi beberapa pengaturan lainnya:

Yang terbaik adalah memilih wilayah yang dekat dengan tempat tinggal sebagian besar pemirsa situs Anda. Memeriksa kecepatan situs untuk situs Inggris Raya dari Tokyo tidak akan memberikan hasil yang sama seperti yang diperoleh audiens Anda.

Agar Anda dapat memanggil layanan ini dari Google Sheets, itu harus mengizinkan pemanggilan yang tidak diautentikasi. Jika Anda khawatir tentang mengunci dan mengamankan layanan untuk mencegah orang lain menggunakannya, Anda harus melakukan ini dengan (misalnya) memeriksa dari rahasia API di permintaan HTTP atau semacamnya.

Selanjutnya Anda harus memilih wadah yang Anda buat sebelumnya. Anda dapat mengetikkan nama jika Anda mengingatnya atau klik "Pilih" dan pilih dari menu.

Kemudian klik “Show Advanced Settings” karena ada konfigurasi lebih lanjut yang harus dilakukan.

Anda perlu meningkatkan alokasi memori karena pengujian Lighthouse membutuhkan lebih dari 256 MB untuk dijalankan. Saya telah memilih 1GiB di sini tetapi Anda mungkin memerlukan tunjangan maksimum 2GiB untuk beberapa situs.

Saya telah menemukan bahwa mengurangi konkurensi menjadi 1 meningkatkan keandalan layanan. Artinya, Google akan secara otomatis memulai penampung baru untuk setiap permintaan HTTP. Sisi negatifnya adalah ini membutuhkan sedikit lebih banyak uang.

Klik "Buat" dan layanan Cloud Run Anda akan segera siap.

Anda dapat mencobanya dengan cepat menggunakan URL. Sebagai contoh:

 curl -v "https://lighthouse-sheets-public-v4e5t2rofa-nw.a.run.app?url=https%3A%2F%2Fwww.example.com"

Atau kunjungi https://lighthouse-sheets-public-v4e5t2rofa-nw.a.run.app?url=https%3A%2F%2Fwww.example.com di browser Anda.

Langkah selanjutnya adalah menulis beberapa Appscript sehingga Anda dapat menggunakan API baru Anda dari dalam Google Sheets.

Buka Google Sheet baru dan buka Appscript editor.

Ini akan membuka tab baru tempat Anda dapat mengkodekan fungsi kustom Google Sheets Anda.

Ide utamanya di sini adalah menggunakan fungsi Appscript UrlFetchApp untuk melakukan permintaan HTTP ke API Anda. Beberapa kode dasar untuk melakukan ini terlihat seperti ini:

 function LIGHTHOUSE(url) { const BASE_URL = "https://lighthouse-sheets-public-v4e5t2rofa-nw.a.run.app" var request_url = BASE_URL+"?url="+encodeURIComponent(url) var response = UrlFetchApp.fetch(request_url) var result = JSON.parse(response.getContentText()) return(result.categories.performance.score * 100) }

Baris terakhir mengembalikan skor kinerja keseluruhan ke dalam lembaran. Anda dapat mengeditnya untuk mengembalikan yang lain. Misalnya untuk mendapatkan skor SEO gunakan result.categories.seo.score.

Atau Anda dapat mengembalikan beberapa kolom hasil dengan mengembalikan daftar seperti ini:

[result.categories.performance.score, result.categories.seo.score]

Simpan file dan kemudian Anda akan memiliki fungsi khusus yang tersedia di Google Sheet Anda yang disebut LIGHTHOUSE.

Cara termudah untuk memulai ini adalah dengan menyalin contoh Google Sheet saya dan kemudian memperbarui kode sendiri untuk menunjuk ke API Anda sendiri dan mengembalikan hasil Lighthouse yang paling Anda minati.

Tingkatkan pengetahuan spreadsheet Anda

Hal yang hebat tentang metode ini adalah ia dapat bekerja untuk apa pun yang dapat dibungkus dalam wadah Docker dan mengembalikan hasil dalam 30 detik. Sayangnya fungsi khusus Google Sheets memiliki waktu tunggu sehingga Anda tidak akan memiliki cukup waktu untuk melatih beberapa algoritme pembelajaran mendalam yang masif, tetapi masih menyisakan banyak hal yang dapat Anda lakukan.

Saya menggunakan proses yang sangat mirip untuk Forecast Forge addon Google Sheets saya, tetapi alih-alih mengembalikan skor Lighthouse, ia mengembalikan perkiraan bertenaga pembelajaran mesin untuk angka apa pun yang Anda masukkan ke dalamnya.

Kemungkinan untuk hal semacam ini sangat menarik karena di Pemasaran Penelusuran kami memiliki banyak orang yang sangat mahir menggunakan spreadsheet. Saya ingin melihat apa yang dapat mereka lakukan saat mereka dapat menggunakan semua pengetahuan spreadsheet mereka dan menyempurnakannya dengan pembelajaran mesin.


Pendapat yang dikemukakan dalam artikel ini adalah milik penulis tamu dan tidak harus Search Engine Land. Penulis staf tercantum di sini.