Close Menu
網上營銷專家 BLOG網上營銷專家 BLOG

    訂閱最新賺錢貼士

    獲取網上營銷專家 Online Marketing Leader 最新 網上創業 | 小本創業 | 批發 | 代購 | 網上推廣 | SEO | Dropshipping | 賺錢 | 網店製作貼士!

    熱門討論

    預先做好網上創業準備:為何比失業後再考慮更有利?

    October 21, 2024

    沒有網上快速致富的方法 – 不要落入“輕鬆賺錢”的陷阱!

    October 8, 2024

    為什麼要自己學懂在韓國直接以批發價入貨或直接從韓國時裝批發 agent 補貨?

    October 8, 2024
    Facebook Instagram YouTube WhatsApp
    網上營銷專家 BLOG網上營銷專家 BLOG
    Trending
    • 預先做好網上創業準備:為何比失業後再考慮更有利?
    • 沒有網上快速致富的方法 – 不要落入“輕鬆賺錢”的陷阱!
    • 為什麼要自己學懂在韓國直接以批發價入貨或直接從韓國時裝批發 agent 補貨?
    • 在網上銷售韓國時裝是需要講求技巧的
    • 為什麼要自己學懂營運及製作網上時裝店?
    • 10 個頁面會影響全站排名嗎?
    • Pod Digital Media 如何利用創新為品牌提供有意義的聯繫
    • ChatGPT 幫助您開展業務的 5 種方式
    Facebook Instagram YouTube WhatsApp
    • 首頁
    • 網店創業
      • 日貨網店創業課程
      • AI 韓國時裝網店創業課程
      • Amazon FBA 網店創業課程
      • AI Dropshipping 網店創業
      • 零成本網上創業
    • 網上推廣
      • Facebook 廣告行銷推廣課程
      • Canva 社交媒體應用課程
      • AI 數碼內容營銷課程
      • 社交媒體推廣
      • 多媒體推廣
      • 網上營銷
      • 聯盟行銷
    • 韓國批發
      • 3日2夜韓國批發創業課程
      • 韓國童裝批發代購課程
      • 韓國供應商資料
    • 日本批發
    • 泰國批發
    • 廣州十三行批發
    • 被動收入
    • SEO 優化
    • 折扣優惠
    網上營銷專家 BLOG網上營銷專家 BLOG
    Home » 使用 Google Sheets 和 GSC API 自動產生跨站點報告
    SEO

    使用 Google Sheets 和 GSC API 自動產生跨站點報告

    onlineadminBy onlineadminMay 8, 202405 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr WhatsApp Reddit Email
    Share
    Facebook Twitter LinkedIn Pinterest Email

    SEO 工作會帶來一些有趣的挑戰,我相信你們都曾在某個時候面臨過這些挑戰。

    您是靈活性和管理繁瑣任務的大師。 我最近發現自己正在與 100 多個頂級網站打交道。

    與跨國公司合作是一個相當大的難題:

    • 搜尋 100 多個網站的資料。
    • 追蹤每個站點的效能。

    由於其中一些網站在 Google 第一頁上相互競爭,因此網站 1 的流量很可能會下降,但網站 2 會承受損失。

    檢查網站的 Google Search Console (GSC) 很簡單,但對於全球範圍內的數百個網站而言,這非常耗時。

    你能做什麼?

    我想出了一個連接到 GSC API 的 Google Sheets Apps 腳本,將全球報告從一項可能需要數天或數週的艱鉅任務轉變為只需要幾分鐘的任務。

    建立腳本後,我可以輕鬆輸入日期範圍並提取每個網站:

    • 點擊次數和展示次數。
    • 關鍵字。
    • 平均收視率。
    • ETC。

    由於我們管理數百個網站,因此用戶最終訪問我們的網站之一進行購買的情況並不少見,如上所述。

    從長遠來看,全局比單一站點的性能更重要。

    我將向你展示的是我的 10步驟流程 建立一個拉取的腳本 點擊次數和展示次數 然後年復一年(每年)比較一切。

    建立 Google Sheets Apps 腳本以產生數百個網站報告的 10 步驟流程

    第 1 步:建立您的 Google 表格

    步驟 1 存取 Google 雲端硬碟作者截圖,2024 年 4 月

    第一步是建立原始的 Google 試算表檔案。 您可以按照以下步驟進行操作:

    • 前往谷歌雲端硬碟。
    • 導航到要放置文件的資料夾。
    • 右鍵點擊 背景
    • 選擇 > Google 試算表 > 空白表。

    您想要重新命名該檔案。 我將我的報告稱為「全球搜尋控制台報告」。

    步驟 1 命名 google 表格文件作者截圖,2024 年 4 月

    您的文件現已設定完畢,您可以進行下一步了。

    第 2 步:設定您的 Google 表格

    在您為第 1 行添加一些標題之前,空白工作表沒有用處,並且對使用者沒有任何意義。

    • 網站
    • 利基
    • 點擊次數
    • 印象數
    • 每年的點擊次數。
    • 印象同比。
    • 點擊率差異。
    • 展示次數差異百分比。

    您的文件現在應如下所示:

    步驟 2 新增列標題作者截圖,2024 年 4 月

    下一步是建立一個 Google Cloud 項目,這也非常簡單明了。

    第 3 步:建立 Google Cloud Console 資料項目

    創建專案應該是免費的,因為 Google 提供 300 美元的信用來測試他們的平台。 如果您尚未使用過 Google Cloud,可以在 https://console.cloud.google.com/ 找到它。

    現在您可以按照以下步驟操作:

    • 龍頭 選擇項目 > 新項目。
    • 輸入項目名稱(例如:「我的 GSC 資料項目」)。
    • 龍頭 創造。
    步驟 3 谷歌控制台項目作者截圖,2024 年 4 月
    • 點選 選擇項目。
    • 選擇您的項目。

    步驟3 選擇項目

    • 點擊頂部 搜尋 酒吧。
    • 輸入「Google 搜尋控制台 API」。」
    • 選擇 「Google 搜尋控制台 API」。
    • 點選 積極的

    步驟 3 搜尋控制台 API

    步驟 4:在 Google 試算表中建立應用程式腳本

    在此步驟中,我們將致力於將 Apps 腳本整合到您先前建立的 Google 試算表中。 您需要打開該工作表並按照以下步驟操作:

    • 龍頭 擴充 > 應用程式腳本。

    第 4 步:建立應用程式腳本

    我不會詳細介紹該腳本的工作原理,但您可以複製以下程式碼:

    function onOpen() {
      var ui = SpreadsheetApp.getUi();
      // Or DocumentApp or FormApp.
      ui.createMenu('Search Console')
        .addItem('Fetch Data', 'menuItem1')
        .addToUi();
    }
    
    function menuItem1() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var lastRow = sheet.getLastRow(); // Find the last row with data in column A
    
      // Clear cells C2:F151 before processing data
      sheet.getRange("C2:F151").clearContent();
    
      for (var i = 2; i <= lastRow; i++) { var siteProperty = sheet.getRange(i, 1).getValue(); var startDateValue = sheet.getRange('M1').getValue(); var endDateValue = sheet.getRange('M2').getValue(); var timeZone = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(); var format = "yyyy-MM-dd"; // Calculate dates for last year var lastYearStartDate = new Date(startDateValue); lastYearStartDate.setFullYear(lastYearStartDate.getFullYear() - 1); var lastYearEndDate = new Date(endDateValue); lastYearEndDate.setFullYear(lastYearEndDate.getFullYear() - 1); var startDate = Utilities.formatDate(lastYearStartDate, timeZone, format); var endDate = Utilities.formatDate(lastYearEndDate, timeZone, format); // Fetch data for the previous year var previousYearResponse = requestSearchConsoleAPI(siteProperty, startDate, endDate); // Fetch data for the current year (unchanged) startDate = Utilities.formatDate(new Date(startDateValue), timeZone, format); endDate = Utilities.formatDate(new Date(endDateValue), timeZone, format); var currentYearResponse = requestSearchConsoleAPI(siteProperty, startDate, endDate); // Process and write data for both years processAndWriteData(sheet, i, previousYearResponse, currentYearResponse); } } function processAndWriteData(sheet, row, previousYearResponse, currentYearResponse) { // Check if response is not defined or null and has at least one row if (previousYearResponse && previousYearResponse.length > 0) {
        var previousYearClicks = 0;
        var previousYearImpressions = 0;
    
        previousYearResponse.forEach(function(row) {
          previousYearClicks += row.clicks;
          previousYearImpressions += row.impressions;
        });
    
        sheet.getRange(row, 5).setValue(previousYearClicks); // Write to column D (index 5)
        sheet.getRange(row, 6).setValue(previousYearImpressions); // Write to column E (index 6)
      } else {
        Logger.log('No data found for previous year in row: ' + row);
      }
    
    // Process and write data for the current year
      if (currentYearResponse && currentYearResponse.length > 0) {
        var currentYearClicks = 0;
        var currentYearImpressions = 0;
    
        currentYearResponse.forEach(function(row) {
          currentYearClicks += row.clicks;
          currentYearImpressions += row.impressions;
        });
    
        sheet.getRange(row, 3).setValue(currentYearClicks); // Write to column C (index 3)
        sheet.getRange(row, 4).setValue(currentYearImpressions); // Write to column D (index 4)
      } else {
        Logger.log('No data found for current year in row: ' + row);
      }
    }
    
    
    
    function requestSearchConsoleAPI(siteProperty, startDate, endDate) {
    
      try {
        const oauthToken = ScriptApp.getOAuthToken(); // Correctly call the method
        const siteUrl = siteProperty;
        const url="https://www.googleapis.com/webmasters/v3/sites/" + encodeURIComponent(siteUrl) + '/searchAnalytics/query';
        const payload = {
          startDate: startDate,
          endDate: endDate,
          type: 'web'
        };
    
        const headers = {
          'Authorization': 'Bearer ' + oauthToken,
          'Content-Type': 'application/json'
        };
        const options = {
          'method': 'post',
          'contentType': 'application/json', // Consistent content type
          'headers': headers,
          'payload': JSON.stringify(payload),
          'muteHttpExceptions': true
        };
    
        const response = UrlFetchApp.fetch(url, options);
        const responseCode = response.getResponseCode();
        const contentText = response.getContentText(); // Get response text for logging
    
      Logger.log('Response Code: ${responseCode}'); // Use backticks
      Logger.log('Response Content: ${contentText}'); // Use backticks
    
    
      if (responseCode === 200) {
        const json = JSON.parse(contentText);
        Logger.log(json); // This will log the actual JSON response
        return json.rows; // Adjust this line based on the actual structure of your API response
      } else {
        // Correctly use backticks here for template literals
        const errorMessage="Error fetching data: ${responseCode} - ${contentText}";
        Logger.log(errorMessage);
        throw new Error(errorMessage);
      }
    
      } catch (e) {
        Logger.log('Error: ${e.toString()}');
        return null;
      }
    }

    然後返回您的 Apps 腳本項目並執行以下操作:

    • 按 CTRL+A 選擇全部。
    • 按 CTRL+V 貼上您複製的程式碼。
    • 龍頭 好的。
    • 點選 保存項目。
    • 龍頭 跑步。

    *筆記: 如果您收到來自 Google 的錯誤請求錯誤(重定向次數過多),那是因為您啟動了多個帳戶。 嘗試使用僅登入一個 Google 帳戶的瀏覽器。

    步驟 4 儲存應用程式運行腳本作者截圖,2024 年 4 月

    系統會提示您 審核權限 您需要選擇與 Google Search Console 相關的 Google 帳戶。

    Google 會警告您該應用程式尚未經過驗證,因此只需點擊 “先進的” 設定然後 “轉到無標題項目(不安全)。”

    步驟 4 不安全的應用程式作者截圖,2024 年 4 月

    最後,您可以透過點擊或點擊來完成此步驟 允許 按鈕

    第 5 步:設定您的登入憑證

    我知道表格和 Google Cloud Console 之間有很多來回,但不幸的是,目前這是必要的。 現在,我們將設定您的登入憑證,這將要求您返回 Google Cloud Console。

    筆記: 你必須有 能力 上一個步驟中的 Google Search Console API。

    螢幕應如下圖所示:

    驗證濃度篩選步驟 5作者截圖,2024 年 4 月

    您將需要:

    • 龍頭 憑證 > 建立憑證。
    • 龍頭 OAuth 用戶端 ID > 設定同意畫面。

    步驟 5 建立 oauth 憑證

    • 點選 外部的
    • 龍頭 創造。
    • 進來 “我的 GSC 數據” 例如應用程式的名稱。
    • 添加您的 支援電子郵件 (您用於 GSC 的電子郵件)。
    • 添加您的 d開發商聯絡資訊 (您用於 GSC 的電子郵件)。
    • 龍頭 保存並繼續。
    • 龍頭 新增或刪除範圍。
    • 檢查 2 個 谷歌搜尋控制台API 區域(可能位於第 2 頁)。

    步驟 5 新增 gsc api 範圍

    • 點選 更新
    • 點選 保存並繼續。
    • 現在點擊 新增用戶

    步驟 5 新增用戶

    • 您可以新增多個用戶,最好是有權存取 GSC 的用戶。
    • 保存並繼續。

    第 6 步:為 GSC 資料設定 Google Cloud 項目

    當我們仍在進行 Google Cloud 專案時,您需要點擊 漢堡圖示 並前往 雲端概述 > 儀表板:

    步驟 6 雲端儀表板作者截圖,2024 年 4 月

    您會注意到它顯示“項目編號”,您應該選擇它並 複製 緊迫 CTRL+C。

    返回您的 Apps 腳本標籤並點擊 項目設定:

    設定應用程式第 6 步作者截圖,2024 年 4 月

    前往標題部分 谷歌雲端平台(GCP)計畫。將項目編​​號 (CTRL + V) 貼上到文字方塊中,然後按一下 建立專案

    步驟 7: 重新命名您的 Google Apps 腳本

    現在您需要重新命名您的 Apps 腳本,方法是: 專案歷史 像這樣:

    步驟 7 中的項目名稱

    然後:

    • 點選 無標題項目 在螢幕頂部。
    • 進來 「我的 GSC 資料專案腳本」。
    • 點選 更改名稱。

    步驟 8:編輯 Code.gs 腳本的 Google Apps 清單文件

    你仍然停留在你的劇本中,我們會回來討論這個 專案配置 就像我們之前所做的那樣。

    這次,您需要點擊 在編輯器中顯示“appsscript.json”清單文件 以確保其旁邊有復選標記。

    然後點擊 編輯 並導航至 應用程式腳本.json您可以在下面看到:

    步驟 8 編輯 appscript json作者截圖,2024 年 4 月

    您想要刪除 appsscript.json 檔案中的所有內容並貼上以下腳本:

    {
      "timeZone": "America/New_York",
      "dependencies": {
      },
      "exceptionLogging": "STACKDRIVER",
      "oauthScopes": [
        "https://www.googleapis.com/auth/webmasters",
        "https://www.googleapis.com/auth/script.external_request",
        "https://www.googleapis.com/auth/spreadsheets",
        "https://www.googleapis.com/auth/spreadsheets.currentonly"
      ]
    }

    添加代碼後,您可以單擊 代碼.gs 文件並點擊 節省, 進而 跑步。 系統將提示您檢查權限,並需要選擇適當的帳戶才能繼續使用它。

    出現幾次提示後,系統將要求您授權「我的 GSC 資料」應用程序,它將開始運行。

    第9步:調整網站資料分析的日期

    在您的 Google 試算表檔案中,您需要新增以下內容:

    • L1:初始日期。
    • L2: 完成日期。

    筆記:開始和結束日期必須在中指定 M1 我 M2。 例如,您可以輸入:

    筆記:日期格式可能會有所不同,具體取決於您的系統配置和位置。

    步驟 10:為小於零的非空白儲存格設定條件格式

    一切都已設定完畢,但您應該添加一些條件格式以使其看起來更好。 我們將重點放在「點擊差異百分比」和「展示差異百分比」欄位:

    步驟 10 中的點擊展示次數作者截圖,2024 年 4 月

    選擇「點選差異百分比」和「展示差異百分比」標題下的行,然後點選 格式 > 條件格式。 在下面 格式規則, 你會想要選擇 少於。

    在“值或公式”文字區域中,您可以新增 0。

    其作用是,如果它小於 0,我們會將顏色更改為紅色,因為它是負數並且丟失了流量。 您可以透過點擊油漆罐並更改它來完成此操作 紅色的 在按一下“完成”之前。

    如果您想將流量的正增長更改為綠色,您需要添加另一條規則 大於 並添加 0 價值

    以下是 G2 和 H2 中使用的公式(您可以為每一行複製它們 – 只需單擊並向下拖動其他行):

    =IFERROR(IF(AND(C2<>"",E2<>""), (C2-E2)/E2, ""),"")
    =IFERROR(IF(AND(D2<>"",F2<>""), (D2-F2)/F2, ""),"")

    現在,您可以輕鬆地在多個位置同時執行報表。

    就是這樣,您就有了全球報告

    在 A 欄中,輸入您的 Google Search Console 屬性; 如果它是網域屬性,請將其新增為 domain-sc:example.com 或將 URL 屬性新增為 https://example.com

    若要運行或更新報告,請使用特殊選單 搜尋控制台 > 擷取資料:

    運行最後一步

    *筆記: 該腳本支援大約 150 個網域,但如果您需要更多網域,可以調整 AppScripts 檔案的第 14 行:

    sheet.getRange("C2:F151").clearContent();

    使用相同的教程,您可以輕鬆地將數天的資料收集和報告執行時間縮短為幾分鐘。 您甚至可以擴展腳本來執行其他計算或為報告收集更多資料。

    請參閱我關於將 ChatGPT 與 Google Sheets 整合的其他教學。

    自動化報告是簡化繁瑣任務的好方法,我希望它能讓您的工作變得更輕鬆。

    更多資源:


    特色圖片:200dgr /Shutterstock

    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    onlineadmin
    • Website

    Related Posts

    為什麼要自己學懂營運及製作網上時裝店?

    October 8, 2024

    10 個頁面會影響全站排名嗎?

    June 10, 2024

    谷歌悄然修復了搜尋結果中的網站名稱

    June 9, 2024
    Add A Comment
    Leave A Reply Cancel Reply

    Top Posts

    預先做好網上創業準備:為何比失業後再考慮更有利?

    October 21, 2024

    沒有網上快速致富的方法 – 不要落入“輕鬆賺錢”的陷阱!

    October 8, 2024

    為什麼要自己學懂在韓國直接以批發價入貨或直接從韓國時裝批發 agent 補貨?

    October 8, 2024
    Don't Miss

    預先做好網上創業準備:為何比失業後再考慮更有利?

    By onlineadminOctober 21, 2024 網店創業

    在不確定的經濟環境中,越來越多的人開始探索網上商業模式,期望能夠賺取額外收入,甚至轉變成全職事業。然而,很多人在失業或工作不穩定時才開始考慮創業,這種做法其實存在一些潛在風險和挑戰。相反,預先做好網上創業的準備,無論你目前的職業狀況如何,都能讓你在面對不確定性時更具彈性和應對能力。 在這篇文章中,我們將深入探討為何預先做好網上創業的準備,比起等到失業或面對工作危機時才考慮,會為你帶來更多優勢。 1. 掌握主動權,避開被動局面 一個人在失業後才決定創業,往往是在沒有其他選擇的情況下做出的選擇,這樣的創業動機可能較為被動。當你在職場上仍有穩定收入時開始準備創業,你便能以更從容的心態去進行市場調查、產品開發和品牌規劃,而不會因為經濟壓力而倉促做決定。 此外,網上創業需要的資源並不僅僅是時間和金錢,還有學習如何操作電子商務平台、建立品牌形象、掌握數碼行銷技巧等。這些都是需要時間去學習和實踐的,如果在失業後才匆忙上手,可能會導致決策失誤或錯失商機。而預先做好準備,你可以慢慢累積經驗,逐步調整自己的策略,讓創業過程更具可控性。 2. 資金與資源的準備時間 創業無論大小,都需要一定的資金投入,即使是網上創業也不例外。這些資金可能包括網站搭建、產品庫存、廣告推廣、工具訂閱等。失業後才開始創業,可能面臨資金不足的困境。而如果你在職時已經開始儲備創業資金,甚至能夠利用一部分收入投入創業,便能夠大幅減少財務壓力,讓你有更好的條件去經營業務。 同時,預先開始準備創業,還能幫助你找到適合的供應鏈合作夥伴、技術支援和行銷渠道。這些資源的建立需要時間和網絡,當你在穩定狀態下經營創業準備時,能夠更仔細地篩選和安排這些合作關係,確保日後正式開展業務時能夠順利進行。 3. 時間管理與創業學習的平衡 網上創業需要學習的技能眾多,例如電子商務平台的操作、數碼行銷、內容創作、SEO優化等。這些技能需要時間去熟練掌握。如果你是在失業後才開始學習這些,可能會面臨時間和壓力的雙重挑戰。然而,如果你在還有穩定收入的情況下,便能更有彈性地分配時間來學習這些技能。 例如,你可以利用下班時間參加網上創業課程,在週末開始嘗試小規模經營,從中學習如何與顧客溝通、處理物流等問題。這種漸進式的學習和實踐,能夠讓你在未來面對創業全職化時,有更好的基礎和信心。 4.…

    沒有網上快速致富的方法 – 不要落入“輕鬆賺錢”的陷阱!

    October 8, 2024

    為什麼要自己學懂在韓國直接以批發價入貨或直接從韓國時裝批發 agent 補貨?

    October 8, 2024
    Stay In Touch
    • Facebook
    • Instagram
    • YouTube
    • WhatsApp

    Follow Me!

    廣州十三行批發
    頁面
    • 關於我們
    • 聯絡我們
    • DMCA
    • Privacy Policy
    • Terms and Condition
    • Disclaimer
    精選推薦

    預先做好網上創業準備:為何比失業後再考慮更有利?

    October 21, 2024

    沒有網上快速致富的方法 – 不要落入“輕鬆賺錢”的陷阱!

    October 8, 2024

    為什麼要自己學懂在韓國直接以批發價入貨或直接從韓國時裝批發 agent 補貨?

    October 8, 2024

    訂閱最新賺錢貼士

    獲取網上營銷專家 Online Marketing Leader 最新 網上創業 | 小本創業 | 批發 | 代購 | 網上推廣 | SEO | Dropshipping | 賺錢 | 網店製作貼士!

    Type above and press Enter to search. Press Esc to cancel.