我一直在試圖弄清楚如何讓 Google AppsScript 直接在 Google 表格中引入用于關鍵字排名跟蹤的 API。
該回圈需要從 A 列動態拉取資訊,并將關鍵字排名位置輸出到 G 列。
關鍵字位于單元格 A2-A100 中。排名位置(這是我們從 API 中提取的唯一內容)我們從 G2 開始彈出到 G 列中的相應行。出于測驗目的,我們將回圈設定為 1 到 3。
對于為什么這不能按預期作業,我們有點不知所措,并且真的很感激朝著正確的方向輕推!
問題是第一個結果總是在 API 中回傳“keyword = undefined”,并回傳“-1”的結果,這意味著沒有讀取第一行。我們已經嘗試將 r 更新為 0、2,并更改 r 參考無濟于事。
這讓我們認為回圈一定有問題,而不是代碼的其余部分,但如果不是這樣,請糾正我。
到目前為止,我們得到的腳本是;
function callAPI() {
//New loop
for (r = 1; r <= 3; r ) {
{
//Find keyword, encode query and url
var query = keyword;
var url =
'https://api.avesapi.com/search?apikey={{APIKEYREMOVEDFORPRIVACY}}&type=web&'
'google_domain=google.co.uk&gl=gb&hl=en&device=mobile&output=json&num=100&tracked_domain={{CLIENTDOMAIN}}.com&position_only=true&uule2=London, United Kingdom'
'&query='
encodeURIComponent(query);
//Call API and add to log
var response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
Logger.log(response);
//Get column value for keyword
var sheet = SpreadsheetApp.getActiveSheet();
var keyword = sheet.getRange(1 r, 1).getValue();
}
//Set value of column
var results = sheet.getRange(1 r, 7).setValue(response);
}
}
附加編輯:所以這是非常清楚的,所需的輸入是;
- 使用 API 讀取 A2 中的關鍵字,并將找到的輸出(排名位置)輸入 G2。
- 然后回圈應該讀取 A3,在 API 中找到相應的排名位置,并將該值添加到 G3
- 沖洗并重復直到回圈結束。
希望這足以繼續下去,非常感謝您的任何建議,謝謝!
uj5u.com熱心網友回復:
基本上從 TheMaster 的評論中,您可以將您的陳述改為:
function callAPI() {
var sheet = SpreadsheetApp.getActiveSheet();
var keywords = sheet.getRange(2,1,3).getValues();
var responses = [];
//New loop
for (r = 0; r <= 2; r ) {
//Find keyword, encode query and url
var query = keywords[r][0];
var url =
'https://api.avesapi.com/search?apikey={{APIKEYREMOVEDFORPRIVACY}}&type=web&'
'google_domain=google.co.uk&gl=gb&hl=en&device=mobile&output=json&num=100&tracked_domain={{CLIENTDOMAIN}}.com&position_only=true&uule2=London, United Kingdom'
'&query='
encodeURIComponent(query);
//Call API and add to log
var resp = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
Logger.log(resp);
responses.push([resp]);
}
//Set value of column
sheet.getRange(2,7,3).setValues(responses);
}
請注意,我將作業表宣告移到了回圈之外,它只需要被呼叫一次。
編輯:我更新了代碼以遵循標簽資訊頁面中的最佳實踐。請注意使用陣列作為 的回傳值getValues()和 的引數setValues()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/358799.html
上一篇:將2個陣列合并為一個有2列的陣列
