用于组合多个脚本的脚本

时间:2015-11-14 08:50:16

标签: google-apps-script

以下脚本无法正常工作。任何人都可以帮我检查一下我是否遗漏了什么?给我错误 TypeError:无法调用null 的方法“getValue”。我再次运行脚本,它会通过,但不会更改文件中的任何内容。

以下是脚本的各个部分以及它们应如何工作:

首先部分是自动从关键字检​​查器中的CSV报告中获取数据。我有这个“设置”表,其中包含报告的密码,电子邮件和URL链接。 >第一部分工作正常。

第二个部分是将数据粘贴到“GetCSV”表中。但首先我们必须检查前三列中是否有数据,如果有任何现有数据,我们必须将所有数据移到右侧。我们在第2列第2行的“GetCSV”表中粘贴我们从.csv文件获得的内容。在第1行第2行,我们将日期和时间格式从A2开始粘贴到带有数据的最后一行:

    setValue(Utilities.formatDate(new Date(), "GMT", "MM-dd HH:mm AM/PM"));  

第三部分,我们将我们更新的相同数据复制到其最终目标“数据”表,从第一个空行开始。

我对Java脚本不太了解,我已经有了这个脚本,我只需要根据我的需要对它进行一些修改。

    function getCsv(){

  //populateSheetWithCSV("http://simple.keywordinspector.com/simple/download.php?id=12612", "###.#####@gmail.com", "Abc12345")
  //;
  //var settingsSheet= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("settings");


  var passCell = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("password");
  //getRange("B3");
  var emailCell = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("email");
  Logger.log(emailCell)

  var cp = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_512, passCell.getValue());
  var sp = '';
    for (i = 0; i < cp.length; i++) {
      var byte = cp[i];
      if (byte < 0)
        byte += 256;
      var byteStr = byte.toString(16);
      // Ensure we have 2 chars in our byte, pad with 0
      if (byteStr.length == 1) byteStr = '0'+byteStr;
      sp += byteStr;
    }   
  var payload =
   {
     "email" : emailCell.getValue(),
     "password" : "",
     "p" : sp
   }
  Logger.log(cp);
  //return; 
  var options =
   {
     "method" : "post",
     "payload" : payload,
     "followRedirects" : false
   };
  var login = UrlFetchApp.fetch("http://simple.keywordinspector.com/simple/process_login.php" ,     options);
  login.getContentText()
  var sessionDetails = login.getAllHeaders()['Set-Cookie'];

  Logger.log(sessionDetails)

  var csvUrlId = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("URL_Id").getValue(); 
  var csvUrls  = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("URLS").getValues(); 

  Logger.log(csvUrls[csvUrlId-1]);

  var downloadCsv = UrlFetchApp.fetch(csvUrls[csvUrlId-1]     ,//"http://simple.keywordinspector.com/simple/download.php?id=12612", 
                              {"headers" : {"Cookie" : sessionDetails},
                               "method" : "post",
                               "payload" : payload
                              });
  //Logger.log(downloadCsv.getContentText())

  var csvContent = Utilities.parseCsv(downloadCsv.getContentText());

  var sheet= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GetCSV");
  var fisrtEmptyColumn 
  for (i=1 ; i<1024 ; (i=i+2))  {
    var range = sheet.getRange(2,i,1,1);
    if (range.isBlank()) {
      firstEmptyColumn = i
      break;
    }
  }
  Logger.log(firstEmptyColumn);

  for (i = firstEmptyColumn ; i>3 ; i=i-3){
    Logger.log(i)
    var rangeToCopy =sheet.getRange(1, i-3 ,sheet.getMaxRows(),3);
    rangeToCopy.copyTo(sheet.getRange(1, i));
  }

  var cell = sheet.getRange(1,2) 
  var A1not = sheet.getRange(3, 2, sheet.getMaxRows()-2, 1).getA1Notation();
  cell.setFormula("=COUNTA("+A1not+")");

  //
  for (i = firstEmptyColumn ; i>4 ; i=i-2){
    for (j = 3; j < sheet.getMaxRows()-2 ; j++){

  var cell = sheet.getRange(j,1);

  cell.setValue(Utilities.formatDate(new Date(), "GMT", "MM-dd HH:mm AM/PM"));

  sheet.getRange(2, 2, csvContent.length   /* rows */, csvContent[0].length /* columns */).setValues(csvContent);


  firstEmptyColumn = firstEmptyColumn +2 ;
  if (firstEmptyColumn>21) {
    firstEmptyColumn = 21
      }

  Logger.log(firstEmptyColumn);

  var sourcesheet= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GetCSV");
  var SourceRange = sourcesheet.getRange(3, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());

  var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");;
  var targetRange = target.getRange(target.getLastRow() + 1, 2);

  SourceRange.copyTo(targetRange)
 }

 var cell = sourcesheet.getRange("A1")

    for (j = target.getlastrow() +1; j < sheet.getMaxRows()-2 ; j++){

      var targetRange2 = target.getRange(j,1);

      cell.copyto(targetRange2)
    }


  }
  }

0 个答案:

没有答案