从 Google 表格导入数据

时间:2021-05-21 13:50:38

标签: javascript google-apps-script google-sheets

我从 Google 广告帐户中检索关键字 ID 和点击次数,并将它们输入到 Google 表格中。 在 Google 表格中,我会先进行一些计算,然后再将关键字 ID 拉回 Google 广告。

我该怎么做?

function main() {

  //Step 1: Connect Google Ads to the Google Sheet
  var spreadsheetUrl = 'https://docs.google.com/spreadsheets/;
  var spreadsheet = SpreadsheetApp.openByUrl(spreadsheetUrl);
  var ss = spreadsheet.getSheetByName('data');
  ss.clear();

 //Step 2: Create an array to store the data
  var sheetarray = [['clicks', 'ID']];

  //Step 3: Collect the data you need
  var keywords = AdsApp.keywords()
      .withCondition("Clicks > 0")
      .forDateRange("LAST_7_DAYS")
      .get();
  
  //Step 4: Add the data you got from Google Ads into the array
while (keywords.hasNext()) {
  var keyword = keywords.next();
  sheetarray.push([
      keyword.getStatsFor("LAST_7_DAYS").getClicks(),
      keyword.getId(),
    ]);
}

   
  //Step 5: Display the contents of the array
  Logger.log(sheetarray);
  if (sheetarray.length > 0) {
     
    // Step 6: Send the array's data to the Google Sheet
    ss.getRange(1, 1, sheetarray.length, sheetarray[0].length).setValues(sheetarray);
  }
  

  //Step 6: Get keyword IDs from the sheets but how??
  
  
   
}


1 个答案:

答案 0 :(得分:0)

var keyword_IDs = ss.getRange(2, 2, sheetarray.length-1, 1).getValues().flat();

可能


<块引用>

flat() 不起作用,但 join() 起作用

我不知道你想得到什么。但看起来有点不对劲。 flat()join() 有非常不同的输出。 flat() 返回 Arrayjoin() 返回 String

var keyword_IDs = ss.getRange(2, 2, sheetarray_length-1, 1).getValues().flat();

Logger.log(keyword_IDs)                            // [id1, id2, id3, id4, id5]
Logger.log(keyword_IDs.constructor.name);          // Array
Logger.log(keyword_IDs.filter(x => x==",").length) // 0.0 -- it has no comas

var keyword_IDs = ss.getRange(2, 2, sheetarray_length-1, 1).getValues().join();

Logger.log(keyword_IDs);                           // "id1,id2,id3,id4,id5"
Logger.log(keyword_IDs.constructor.name);          // String
Logger.log(keyword_IDs.match(/,/g).length)         // 4.0 -- it has four comas
<块引用>

我收到错误消息:TypeError:在对象 ''' 中找不到函数映射 var CampaignExact = AdsApp.campaigns().withCondition(Campaign_Exact).get().next(); var 关键字 = CampaignExact.keywords().withIds(keyword_ID).get(); while(keywords.hasNext()) { var keyword = keyword.next();关键字。暂停(); } '''

这几乎是无法辨认的消息。对不起。

错误说明 map() 函数。但是我在您的代码中没有看到 map()。然而 map() 是一个数组的方法。不是字符串。

所以我猜 withIds(keyword_ID) 不起作用,因为 keyword_ID 是一个像 'id1,id2,id3...' 这样的字符串。可能应该有一个数组 keywords_ID (['id1', 'id2', 'id3', ...]) 然后应该有 keyword_ID = keywords_ID[0]keyword_ID = keywords_ID[1] ...等在上面的某个地方。只是猜测。

相关问题