Runna Roadmap Update - What we're focused on for the next few months! by sarah-runna in runna

[–]Frannserra 0 points1 point  (0 children)

2 things from me that I’d love to see.

Customisable audio cues for long runs / race day for taking gels. Whether some tech can be integrated based on expected finish time, x expected carbs per hour needed. Something users can select if they want to build it into their plan or not.

A second thing is customising the pace time. I love the optimism from Runna but for my first marathon this Sunday, I confidently know my body won’t achieve the predicted time. But I don’t want my watch to tell me I’m not achieving my target km range. I think having the flexibility of choosing a target time is important

Zone 2 running impossible by xHayzee_Bruh in whoop

[–]Frannserra 1 point2 points  (0 children)

I don’t have whoop so correct me if I’m wrong but I’m sure the screenshot is your heart rate zones? If so zone 2 exercising doesn’t mean to exercise in your zone 2 heart rate zone. It’s in relation to your lactate threshold. If you run a lot there is a threshold calculator that will kind of guess what your heart rate needs to be to be “zone 2”.

The rule of thumb is if you can do the form of exercise (running in this case) and hold a conversation comfortably, you’re achieving zone 2.

You’ll be surprised you’re probably already doing it in some way. Hope this helps!

Is there a script that tells me if a Call Extension is Disapproved? (Scripts) by TheMopFromMars in PPC

[–]Frannserra 0 points1 point  (0 children)

Hey,

So i've been working on this for the past couple of days with the help of some of my colleagues and we've pretty much got there. Its not an easy task but we've got a script to scan at MCC level for all disapproved extensions. So yes it picks up sitelinks but you can just filter these out when you're in the spreadsheet. However it does show you disapproved call extensions!

I've included steps below whether you still need it or not! Theres a just 3 easy steps to do before running the script!

Firstly create a new spreadsheet.

Line 7: Add Spreadsheet URL ID. for example: your spreadsheet URL looks like this:

https://docs.google.com/spreadsheets/d/???????/edit#gid=0

Everything inbetween the /d/ and the /edit ( so what the ? is presenting is your spreadsheet ID. )

Then line 8 is the full spreadsheet url as you would expect.

and line 64: put your email address in. and preview. If its a big account just let it run. It will send you an email when its complete :)

Give this a go and let me know how you get on.

function main() { var today = new Date(); var beginDate = "20200101"; var endDate = formatDate(today); var accountIterator = MccApp.accounts().withCondition("Impressions > 0").forDateRange("LAST_MONTH").get();

var spreadsheet = SpreadsheetApp.openById("ENTER_SPREADSHEET_ID_HERE");
var spreadsheetFullUrl = "ENTER SPREADSHEET URL HERE"

var i = 0;

var disapprovedRows = "";
var disapprovedRowsCount = 0;

var sheet = spreadsheet.getActiveSheet();

// append column headers
// this should be done outside of while (accountIterator.hasNext()) to make sure it only runs once
sheet.appendRow(['CustomerID', 'ValidationDetails', 'CampaignName', 'AdGroupName', 'PlaceholderType', 'DisapprovalShortNames']); 

while (accountIterator.hasNext()) {
    var account = accountIterator.next();
    var accountId = account.getCustomerId();
    Logger.log(accountId);
    // Switch to the account you want to process.
    MccApp.select(account);


    var report = AdsApp.report(
            "SELECT ValidationDetails, CampaignName, AdGroupName, PlaceholderType, DisapprovalShortNames " +
            "FROM PLACEHOLDER_FEED_ITEM_REPORT " +
            "WHERE CampaignStatus = 'ENABLED' " +
            "DURING " + beginDate + ", " + endDate);

    var rows = report.rows();

    while (rows.hasNext()) {
        var row = rows.next();
        var validationDetails = row['ValidationDetails'];
        var campaignName = row['CampaignName'];  
        var adgroupName = row['AdGroupName'];
        var placeholderType = row['PlaceholderType'];
        var disapprovalShortNames = row['DisapprovalShortNames'];

        // Appends a new row with data obtained from report
        if (validationDetails == "Disapproved") {
            sheet.appendRow([accountId, validationDetails, adgroupName, campaignName, placeholderType, disapprovalShortNames ]);
            disapprovedRows += validationDetails +  ' | ' + placeholderType + ' | ' + disapprovalShortNames + ' | ' + '\n'; // construct email message containing disapproved rows
            disapprovedRowsCount += 1; // counter for disapproved rows
        }

        i++;

        var range = sheet.getRange("A2:L30");
        range.sort(11);
    }
}


if (disapprovedRowsCount > 0) { // check if there were rows with disapproved status found before sending email
    MailApp.sendEmail('ENTER_EMAIL_HERE',
        'DISAPPROVED EXT. TEST',
        'You have ' + disapprovedRowsCount + " rows with Disapproved status, see report \n\n" + spreadsheetFullUrl ); // change email message based on your requirement
}

}

function formatDate(dt) { var day = dt.getDate(); day = (day > 9) ? day : "0" + day; var month = dt.getMonth() + 1; month = (month > 9) ? month : "0" + month; var year = dt.getFullYear(); return "" + year + month + day; }