Объединить повторяющиеся строки и установить значения - PullRequest
0 голосов
/ 05 сентября 2018

Я довольно новичок в написании сценариев в листах Google, но я искал на этом форуме и не мог найти ответ '.

С помощью сценария разработчика сценария объявлений Google мне удалось создать экспорт всех поисковых запросов, активирующих мои объявления Google. Эти ключевые слова сравниваются с ключевыми словами в моем аккаунте. Таким образом, я могу найти пропущенные ключевые слова для моей учетной записи и неэффективные ключевые слова.

Этот сценарий выводит ключевые слова в документ листов Google, однако, если ключевое слово присутствует в нескольких кампаниях и / или группах объявлений, для каждой кампании / группы объявлений создается отдельная строка с соответствующими значениями.

Однако мне бы очень хотелось, чтобы эти значения были объединены в одну и ту же строку, чтобы в каждом ключевом слове была только одна строка, а их уникальные значения объединялись бы в одно значение. Это текущий вывод скрипта в гугл листах

и вот как я хотел бы получить вывод

Я действительно не знаю, как мне этого добиться, может кто-нибудь помочь мне с этим? Это будет высоко ценится!

Код, который я запускаю для получения экспорта, добавлен ниже.

// Add your spreadsheet here
var SPREADSHEET_URL = 'Google sheets url';

// This is quereis minmum number of impressions.
var Impressions_Threshold = 50;

// If the CTR is below the threshold, it will be labeled as "Not excluded and low performing"
var CTR_Threshold = 1;

// If the number of conversions is above the threshold and the query is not added, it will be labeled as "Not added and has conversions"
var Conversions_Threshold = 0;

// Add your email here
var Notify_Me = "email"

function main() {

    var sheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL).getActiveSheet();
    var columns = [
        'CustomerDescriptiveName',
        'ExternalCustomerId',
        'Query',
        'CampaignName',
        'AdGroupName',
        'Impressions',
        'Clicks',
        'Cost',
        'Ctr',
        'Conversions'
    ];

    sheet.clearContents();
    sheet.appendRow(columns);
    sheet.getRange("K1").setValue("Added Or Not");

    // Get all the keywords in all the acccounts
    var allKeywords = [];
    var report = AdWordsApp.report(
        "SELECT AdGroupId, Criteria " +
        "FROM KEYWORDS_PERFORMANCE_REPORT " +
        "WHERE KeywordMatchType = EXACT " +
        "DURING TODAY");
    var rows = report.rows();
    while (rows.hasNext()) {
        var row = rows.next();
        var KeywordsLower = row['Criteria'].toLowerCase();
        allKeywords.push(KeywordsLower);
    }

    // Get all the search queries in all the accounts
    var positiveKeywords = [];
    var columnsStr = columns.join(',') + " ";

    var SQRreport = AdWordsApp.report(
        'SELECT ' + columnsStr +
        ' FROM SEARCH_QUERY_PERFORMANCE_REPORT ' +
        ' WHERE ' +
        ' Impressions > ' + Impressions_Threshold +
        ' DURING 20120215,20180904'
    );

    var rows = SQRreport.rows();
    while (rows.hasNext()) {
        var row = rows.next();
        positiveKeywords.push(row['Query']);

        for (var i = 0; i < positiveKeywords.length; i++) {
            if ((allKeywords.indexOf(positiveKeywords[i]) === -1) && (row['Conversions'] > Conversions_Threshold)) {
                row.addedOrNot = 'Not Added and has Conversions';
            } else if ((allKeywords.indexOf(positiveKeywords[i]) === -1) && (parseFloat(row['Ctr']) < CTR_Threshold)) {
                row.addedOrNot = 'Not excluded and low performing';

            } else if (allKeywords.indexOf(positiveKeywords[i]) === -1) {
                row.addedOrNot = 'Not Added';
            } else {
                row.addedOrNot = 'Added'
            }
        }
        sheet.appendRow([row['CustomerDescriptiveName'], row['ExternalCustomerId'], row['Query'], row['CampaignName'], row['AdGroupName'], row['Impressions'], row['Clicks'], row['Cost'], row['Ctr'], row['Conversions'], row['addedOrNot']]);
    }

    MailApp.sendEmail(Notify_Me,
        'SQR Report',
        'Your SQR report for this month is ready, please visit ' + SPREADSHEET_URL + ' Thanks');

}

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете написать это, но в долгосрочной перспективе для вас может быть лучше оставить экспорт таким, какой он есть, и вместо этого сделать так, чтобы второй лист представлял данные по вашему желанию. Я говорю это, так как данные в виде отдельных строк могут быть предпочтительнее для различных аналитических систем.

На втором листе вы можете использовать формулу таблицы Google Query() и получить результаты этой группы по ключевому слову. Вы будете знать лучше, если вам понадобятся все те же столбцы в листе презентации.

Если вы знаете какую-либо SQLlike-базу данных, структура запроса должна быть знакома. Если нет, то это довольно просто, но вы можете прочитать об этом здесь:

...