Adwords Script .getCells给出错误

时间:2015-06-25 16:43:02

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

我一直在使用Adwords脚本创建自定义报告。该报告只是填充了一张google工作表,其中包含各种关键字的所需数据点。我已经使用.getRange().setValues()方法填充了Google表格中的某些表格单元格,但是,在插入实际数据时,我在日志中遇到以下错误:

  

范围的坐标或尺寸无效。 (第73行)

第73行看起来像这样:

sheet.getRange(4, 1, rows.length, 8).setValues(rows);

起初我认为rows.length可能是罪魁祸首,但当我将其更改为数字时(出于测试目的),我得到了一个不同的错误:

  

范围高度不正确,为0但应为20(第73行)

在代码的其他地方,我使用.getRange两次,这些单元格填充没有问题。它们是我动态插入的帐户名称和日期。我究竟做错了什么?我无法理解它给我的错误或如何解决它。

以下是整个脚本的副本:

var ROOT_FOLDER_NAME = 'Keyword Performance';
var SPREADSHEET_URL = 'exampleURL.com';
var ACCT_REPEATER = MccApp.accounts().get();
var ACCOUNTS = [];
var rows=[];


function main() {
    var folder = DriveApp.getFoldersByName(ROOT_FOLDER_NAME).next();
    var formattedDate = Utilities.formatDate(new Date(), 'GMT', 'MMM d, YYYY');

    while (ACCT_REPEATER.hasNext()) {
        processAccount(ACCT_REPEATER.next(), folder);
    }
}



function processAccount(account, rootFolder) {
    MccApp.select(account);
    var spreadsheet = copySpreadsheet(SPREADSHEET_URL, rootFolder, account.getName());
    var sheet = spreadsheet.getSheetByName('Template');
    var acctName = account.getName().split("- ").pop();
    sheet.getRange(2, 2, 1, 1).setValue(new Date());
    sheet.getRange(2, 6, 1, 1).setValue(acctName);
    outputData(account, sheet);
}



function copySpreadsheet(spreadsheetUrl, rootFolder) {
    var fileName = "Keyword Quality Score Report";
    var copy = SpreadsheetApp.openByUrl(spreadsheetUrl).copy(fileName);

    while (ACCT_REPEATER.hasNext()) {
        var sheet = copy.getSheetByName('Template');
        var account = ACCT_REPEATER.next().getName().split("- ").pop();
        copy.insertSheet(account, 1, {template: sheet});
        copy.getSheetByName(account).getRange(2, 2, 1, 1).setValue(new Date());
        copy.getSheetByName(account).getRange(2, 6, 1, 1).setValue(account);
    }
    var newFile = DriveApp.getFileById(copy.getId());
    var oldParent = newFile.getParents().next();
    oldParent.removeFile(newFile);
    rootFolder.addFile(newFile);
    return SpreadsheetApp.openByUrl(newFile.getUrl());
}



function outputData(account, sheet) {
    MccApp.select(account);
    var keywordIterator = AdWordsApp.keywords().get();

    if (keywordIterator.hasNext()) {
        while (keywordIterator.hasNext()) {
          var keyword = keywordIterator.next();
          var stats = keyword.getStatsFor('TODAY');
          var row = [
                    keyword.getCampaign().getName(),
                    keyword.getAdGroup().getName(),
                    keyword.getText(),
                    keyword.getQualityScore(),
                    stats.getImpressions(),
                    stats.getClicks(),
                    stats.getCost(),
                    stats.getAveragePosition()
                ];

            if (keyword.getCampaign().isEnabled()){
                rows.push(row);
            }
            sheet.getRange(4, 1, 20, 8).setValues(rows);
          //Logger.log(row[1]);
        }
    }
}

0 个答案:

没有答案