以下脚本无法正常工作。任何人都可以帮我检查一下我是否遗漏了什么?给我错误 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)
}
}
}