显示带有标签的帖子 第三方. 显示所有帖子
显示带有标签的帖子 第三方. 显示所有帖子

2014年5月5日,星期一

使用脚本将Zoho CRM数据与AdWords连接起来

对于从事B2B每次点击付费的任何人来说,最大的麻烦之一就是试图在一个报告中报告整个销售流程。最大的问题是,营销PPC数据存在于AdWords中(点击次数,展示次数,MQL),而销售数据存在于您的CRM中(线索,联系人,机会等)。因此,我开始研究连接两个数据源的方法。我不使用CRM,所以我注册了免费试用 Zoho CRM 并开始摆弄他们的API。事实证明,它们具有返回JSON对象的REST(ish)API,非常适合AdWords脚本。

我在下面构建了Class,将数据从Zoho中提取出来。它有拉的能力 潜在客户, 联络人, 潜力 以及几乎其他任何东西 Zoho对象 您可以直接从CRM中想到。我停下来只是想获取数据,因为更新或删除记录对AdWords脚本似乎不太有用。

这是该类的快速参考指南。使用var 佐霍 = new ZohoApi(YOUR_API_TOKEN)定义一个新对象;如果您需要设置帐户以访问API或生成令牌的帮助,请查看 Zoho开发人员文档。我为每个Zoho对象生成了一些简单的吸气剂。 ZohoApi.get [Objects]()将拉入所有特定对象。因此,您可以说zoho.getLeads()或zoho.getPotentials()。您还可以通过zoho.getMyLeads()获得仅属于您的那些对象。

如果您还有其他随请求发送的url参数,则可以将它们作为参数添加到函数中。例如,如果要返回前100条记录(而不是默认的20条记录),则应说zoho.getLeads({fromIndex:1,toIndex:100});

您也可以使用zoho.search [Objects]()搜索记录。因此,要搜索已赢得的潜力,可以说zoho.searchPotentials({'searchCondition':'((Stage | = | Closed Won)'});您可以阅读有关Zoho的更多信息 他们的API文档中的searchCondition语法。作为其中的一部分,您可以将要查看的列放在其中,或者如果您什么都没放在其中,则可以使用get [Objects] Fields()方法提取完整的列以为您显示。

至于类的响应,您将获得一个对象数组。对象中的每个键都被小写,并用下划线代替空格。例如,retVal [0] .first_name或retVal [0] .annual_revenue。

因此,试一试,让我知道您在评论中的想法。我在这篇文章的最底部整理了一个简单的示例脚本,以将展示次数,点击次数,转化次数和封闭的获胜潜力每天存储在Google文档中,以使您对可以做什么有所了解。让我知道您接下来想看什么。

谢谢,
拉斯



这是一个非常简单的示例,说明如何将来自多个来源的转化数据合并到一个Google Spreadsheet报告中。

2014年1月9日,星期四

通过AdWords脚本拨打电话并向手机发送短信

我编写的许多脚本都是关于当他们管理的帐户出现问题时提醒SEM经理的。使用MailApp通过电子邮件通知自己和其他人很容易,但是如果由于某种原因无法访问电子邮件怎么办?

为了解决这个问题,我整理了一个非常简单的Javascript对象,该对象允许您使用以下方法发送SMS消息和拨打电话 特威里奥。如果您不熟悉Twilio,他们将为开发人员提供一种简单的方法来将电话应用到他们的应用程序中。他们的API非常易于使用,并且其文档非常出色。

为了使用此脚本,您需要做一些事情。第一, 注册一个Twilio帐户。完成后,您应该拥有一个可用于玩耍的电话号码,以及一个 帐户SID和验证令牌。特威里奥可能不会 可以在您的国家/地区使用 但希望他们会很快到那里。提出请求时,请确保使用完整的电话号码(包括国家代码)。如果您仅使用免费版本,则可能会有使用限制,但我不确定。

设置了代码,以便可以将其复制到需要发送通知的任何脚本中。将Twilio对象复制到脚本中后,无论何时要发送通知,都应添加以下代码:

  ...
  var sid = 'YOUR ACCOUNT SID GOES HERE';
  var auth = 'YOUR AUTH TOKEN GOES HERE';
  //First, 创造 a new 特威里奥 client
  var client = new 特威里奥(sid,auth);
  //Here is how you send a text 信息
  // First number is the receiver (most likely, your cell 电话)
  // Second number is where is it coming from, which is the free number you got when
  //   you registered in 特威里奥
  // The third parameter is what you want the text or voice 信息 to say
  client.sendMessage('+17245551234','+14155554321','WARNING: Your AdWords Account Is Not Serving Ads.');
  client.makeCall('+17245551234','+14155554321',
      'This is an automated 呼叫 to warn you that your AdWords account is no longer serving 广告.');
  ...


当然,sid,auth和client可以是全局变量,这使您可以在代码中使用一行来拨打电话或发送消息。您还可以设置某种上报链,以防人们错过电话或短信。

这只是开始使用UrlFetchApp将AdWords脚本与第三方应用程序集成的简单示例。如果您有3rd party app,您希望我尝试一下,请在评论中留言。

谢谢,
拉斯

/*********************************
* 特威里奥 Client Library
* Based on the 特威里奥 REST API: //www.twilio.com/docs/api/rest
* Version 1.0
* Created By: 拉斯 Savage
* FreeAdWordsScripts.com
*********************************/
function 特威里奥(accountSid, authToken) {
  this.ACCOUNT_SID = accountSid;
  this.AUTH_TOKEN = authToken;
  
  this.MESSAGES_ENDPOINT = '//api.twilio.com/2010-04-01/Accounts/'+this.ACCOUNT_SID+'/Messages.json';
  this.CALLS_ENDPOINT = '//api.twilio.com/2010-04-01/Accounts/'+this.ACCOUNT_SID+'/Calls.json';

  this.sendMessage = function(to,from,body) {
    var httpOptions = {
      method : 'POST',
      payload : {
        To: to,
        From: from,
        Body: body
      },
      headers : getBasicAuth(this)
    };
    var resp = UrlFetchApp.fetch(this.MESSAGES_ENDPOINT, httpOptions).getContentText();
    return JSON.parse(resp)['sid'];
  }
  
  this.makeCall = function(to,from,whatToSay) {
    var url = 'http://proj.rjsavage.com/savageautomation/twilio_script/dynamicSay.php?alert='+encodeURIComponent(whatToSay);
    var httpOptions = {
      method : 'POST',
      payload : {
        To: to,
        From: from,
        Url: url
      },
      headers : getBasicAuth(this)
    };
    var resp = UrlFetchApp.fetch(this.CALLS_ENDPOINT, httpOptions).getContentText();
    return JSON.parse(resp)['sid'];
  }
  
  function getBasicAuth(context) {
    return {
      'Authorization': 'Basic ' + Utilities.base64Encode(context.ACCOUNT_SID+':'+context.AUTH_TOKEN)
    };
  }
}