显示带有标签的帖子 通用脚本运行器. 显示所有帖子
显示带有标签的帖子 通用脚本运行器. 显示所有帖子

2013年10月20日,星期日

使用GDrive将单个AdWords脚本加载到多个帐户中

使用AdWords脚本的缺点之一是您需要登录每个帐户并设置脚本。对于大多数人来说,这在头几次都不是问题。但是,当您开始看到其中一些脚本的价值时,可能需要将一组脚本放入所有帐户中。设置它们很好,直到您发现代码中的错误并且必须进入并更新每个帐户中脚本的所有20个副本为止。

在本文中,我整理了一种简单的方法来保留脚本的单个副本并将其加载到任意数量的AdWords帐户中。然后,如果您要进行更改,则可以更新脚本的单个版本,所有帐户将立即开始使用新代码。

此代码包含两部分。代码的第一段是您需要放置在每个帐户中的通用代码。这段代码引用了一个Google电子表格(以下是一个示例供您复制: http://goo.gl/y6hPfy),它用于了解应该运行哪些脚本。电子表格只有3列:仅用于记录的描述,脚本在Google云端硬盘中的位置以及脚本中的对象名称。现在不用担心,我将在下一部分中对其进行更好的描述。最后,它加载脚本文件并执行main函数。

/************************************
 * Generic Script Runner
 * Version 1.0
 * Created By: 拉斯 Savage
 * FreeAdWordsScripts.com
 ***********************************/
function main() {
  //See http://goo.gl/KvINmD for an example 电子表格.
  var scriptConfigId = 'Your Spreadsheet Id Goes Here';
  var sheet = SpreadsheetApp.openById(scriptConfigId).getActiveSheet();
  var data = sheet.getRange('A:C').getValues();
  for(var i in data) {
    if(i == 0) { continue; }
    var [description, location, classname] = data[i];
    if(!location) { continue; }
    Logger.log('Running "'+description+'" from location: '+location);
    var scriptFile = getFile(location);
    var scriptText = scriptFile.getBlob().getDataAsString();
    eval(scriptText);
    var script = eval('new '+classname+'();');
    script.main();
  }
}
 
//This function gets the file from GDrive
function getFile(loc) {
  var locArray = loc.split('/');
  var folder = getFolder(loc);
  if(folder.getFilesByName(locArray[locArray.length-1]).hasNext()) {
    return folder.getFilesByName(locArray[locArray.length-1]).next();
  } else {
    return null;
  }
}
 
//This function finds the folder for the file and 创造s folders if needed
function getFolder(folderPath) {
  var folder = DriveApp.getRootFolder();
  if(folderPath) {
    var pathArray = folderPath.split('/');
    for(var i in pathArray) {
      if(i == pathArray.length - 1) { break; }
      var folderName = pathArray[i];
      if(folder.getFoldersByName(folderName).hasNext()) {
        folder = folder.getFoldersByName(folderName).next();
      }
    }
  }
  return folder;
}

现在,我们已经有了一段通用的代码,可以从电子表格中读取描述,位置和对象名称并执行代码,我们需要对一些现有脚本进行一些小的修改才能使其正常工作。

我最喜欢的脚本之一是关于 在您的帐户中查找异常。为了从另一个脚本运行该脚本,我们需要使用单个公共函数将其转换为对象。相同的技术应该适用于几乎所有的脚本 FreeAdWordsScripts.com.

首先,将整个脚本包含在一个函数调用中,并根据需要命名。
function Anomalies() {
 // Copy and Paste the code from:
 // http://goo.gl/IT1UcV
};
接下来,您需要将main函数更新为公共方法,以便我们可以从通用脚本中调用它。
this.main = function() {
 // Don't make any changes to the body of the main method
}

完整版本的更新代码可以在这里找到: 在您的帐户对象版本中查找异常.

现在,您可以将此新脚本保存在GDrive中的某个位置,并在配置电子表格中更新位置和对象名称(在这种情况下为异常)。

现在您应该很好了。您可以在配置电子表格中添加任意数量的脚本,但请记住,30分钟的限制仍然适用。

谢谢,
拉斯