1. 您的位置:首页 > seo技术 >内容

如何使用自定义功能在Google表格中显示Lighthouse评分

自动化和机器学习具有巨大的潜力,可以帮助我们所有人进行营销。 但是目前,这些工具中的许多工具对于那些无法编写代码或可以编写一些代码但又不太适应它的人来说是无法使用的。

经常发生的情况是,办公室里只有一两个人熟悉编写和编辑代码,然后这些人制作了其他人都可以运行的脚本和笔记本。 工作流程看起来像这样:

我将向您展示一种简化此工作流程的简单方法,以消除人们需要运行脚本并格式化输出的步骤。 相反,他们可以直接从Google表格中运行自动化程序。

我将向您展示的示例是针对Sheets定制函数的,该函数返回如下gif所示URL的Lighthouse分数:

我将展示给您的方法不是唯一的方法,但是它确实说明了一种更通用的技术,可用于许多方面,包括机器学习算法。

有两个部分:

  1. 一个Google Cloud Run应用程序,它将执行复杂的工作(在这种情况下,将运行Lighthouse测试),并将响应HTTP请求。
  2. 一个Appscript自定义函数,它将向您在步骤1中创建的API发出请求,并将结果返回到Google表格中。

云运行应用程序

Cloud Run是一项Google服务,可获取您提供的docker映像并通过HTTP使其可用。 您只需要在发出HTTP请求时付款,因此对于不全天候使用的此类服务,它非常便宜。 实际成本将取决于您使用它的数量,但是我估计运行数千个测试每月不到1美元。

我们需要做的第一件事是制作一个Docker映像,当我们向它发出HTTP请求时将执行Lighthouse分析。 幸运的是,有一些文档显示了如何在Github上以编程方式运行Lighthouse审核。 链接的代码将分析保存到文件中,而不是通过HTTP返回响应,但是通过将整个内容包装在Express应用程序中是很容易解决的,如下所示:

 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}`); });

将此代码另存为index.js。

然后,您还将需要一个名为package.json的文件,该文件描述了如何安装上述应用程序和一个Dockerfile,以便我们将所有内容打包在Docker中。 所有代码文件都可以在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" ]

构建docker映像,然后您可以像这样在自己的计算机上本地测试事物:

首先启动图像:

 docker run -p 8080:8080 lighthouse-sheets

然后测试是否有效:

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

或在浏览器中访问localhost:8080?url = https%3A%2F%2Fwww.example.com。 您应该看到很多JSON。

下一步是将图像推送到Google Container注册表中。 对我来说,这是一个简单的命令:

 docker push gcr.io/MY_PROJECT_ID/lighthouse-sheets

但是您可能必须先设置docker身份验证,然后才能执行此操作。 另一种方法是使用Google Cloud Build制作图像。 如果您无法通过身份验证,这对您可能会更好。

接下来,您需要使用此Docker映像创建Cloud Run服务。

打开Cloud Run,然后单击“创建服务”

命名并调整设置。 您必须给服务起一个名字并配置其他一些设置:

最好选择一个与您网站的大多数受众所居住的地区接近的地区。 从东京检查英国站点的站点速度不会获得与您的受众相同的结果。

为了让您从Google表格调用此服务,它必须允许未经身份验证的调用。 如果您担心锁定和保护服务以防止其他人使用它,则必须(例如)通过检查HTTP请求中的API机密或类似内容来执行此操作。

接下来,您必须选择之前制作的容器。 如果记得,可以键入名称,也可以单击“选择”并从菜单中选择它。

然后单击“显示高级设置”,因为还有更多配置要做。

您需要增加内存分配,因为Lighthouse测试需要运行超过256Mb的内存。 我在这里选择了1GiB,但对于某些站点,您可能需要2GiB的最大限额。

我发现将并发减少为1可以提高服务的可靠性。 这意味着Google将为每个HTTP请求自动启动一个新容器。 缺点是,这会花费更多的钱。

单击“创建”,您的Cloud Run服务将很快准备就绪。

您可以使用URL对其进行快速测试。 例如:

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

或在浏览器中访问https://lighthouse-sheets-public-v4e5t2rofa-nw.a.run.app?url=https%3A%2F%2Fwww.example.com。

下一步是编写一些Appscript,以便您可以在Google表格中使用新的API。

打开一个新的Google表格,然后打开Appscript编辑器。

这将打开一个新标签,您可以在其中编码Google表格自定义功能。

这里的关键思想是使用Appscript UrlFetchApp函数对您的API执行HTTP请求。 一些执行此操作的基本代码如下所示:

 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) }

最后一行将整体性能得分返回到工作表中。 您可以对其进行编辑以返回其他内容。 例如,要获取SEO分数,请使用result.categories.seo.score。

或者,您可以通过返回像这样的列表来返回结果的多列:

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

保存文件,然后您的Google表格中就会有一个名为LIGHTHOUSE的自定义功能。

最简单的方法是**我的示例Google表格,然后自己更新代码以指向您自己的API,并返回您最感兴趣的Lighthouse结果。

增强电子表格的专业知识

这种方法的优点在于,它可以用于包装在Docker容器中的任何东西,并在30秒内返回结果。 不幸的是,Google表格的自定义函数会超时,因此您没有足够的时间来训练一些大规模的深度学习算法,但是您仍然可以做很多事情。

我对Google表格附加组件Forecast Forge使用了非常类似的过程,但是除了返回Lighthouse得分之外,它返回的是机器学习的预测,无论您输入多少数字。

这种事情的可能性确实令人兴奋,因为在Search Marketing中,我们有很多非常擅长电子表格的人。 我想看看他们可以使用所有电子表格知识并通过机器学习对其进行增强时可以做什么。


本文表达的观点是来宾作者的观点,不一定是Search Engine Land。 工作人员作者在此处列出。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。如若转载,请注明出处:http://www.botadmin.cn/sylc/10396.html