//Settings---------------------------------------------------------------------------------
//*****************************************************************************************
var mail = "mail@mail.cz";
var account_id = "111-111-1111"; //if you have a script in your MCC account
/******************************************************************************************
Script:     Check url 404   
Version:    Adwords 22.02.2017
Created By: Stanislav Jilek [standajilek.cz]
/*****************************************************************************************/

function main() {
//Variables--------------------------------------------------------------------------------    
    var url = [];
    var url_404 = [];
    var count_200 = 0;
    var count_404 = 0;

//Mcc select-------------------------------------------------------------------------------  
    try
    {
        MccApp.select(MccApp.accounts().withIds([account_id]).get().next());
    } catch (error)
    {
    }

//Final urls------------------------------------------------------------------------------- 
//Ads  
    var ads = AdWordsApp.ads()
            .withCondition("CampaignStatus = ENABLED")
            .withCondition("AdGroupStatus = ENABLED")
            .withCondition("Status = ENABLED")
            .withCondition("CreativeFinalUrls != ''")
            .withCondition("Clicks>0")
            .forDateRange("YESTERDAY")
            .get()

    while (ads.hasNext())
    {
        url.push(ads.next().urls().getFinalUrl());
    }

//Remove duplicates------------------------------------------------------------------------
    var unique_url = url.filter(function (elem, index, self) {
        return index == self.indexOf(elem);
    });

//Test urls-------------------------------------------------------------------------------- 
    for (i = 0; i < unique_url.length; i++)
    {
        try
        {
            var response_code = UrlFetchApp.fetch(unique_url[i], {muteHttpExceptions: true}).getResponseCode();

            if (response_code == 404) {
                url_404.push(unique_url[i]);
                count_404 += 1;
            } else {
                count_200 += 1;
            }
            Utilities.sleep(200);

        } catch (error)
        {
        }
    }

//Logger----------------------------------------------------------------------------------  
    Logger.log("Count of unique urls -> " + (count_200 + count_404));
    Logger.log("Response code 200 -> " + count_200);
    Logger.log("Response code 404 -> " + count_404);

//Send mail-------------------------------------------------------------------------------
    var account_name = AdWordsApp.currentAccount().getName();

    if (url_404.length > 0) {
        url_404 = url_404.join("<br>");
        MailApp.sendEmail({
            to: mail,
            subject: account_name + ': ERROR 404',
            htmlBody:
                    "<h2>" + account_name + "</h2><h3>404 url:</h3>" + url_404,
        });
    }

}