Невозможно вызвать метод "getRange" со значением NULL.(строка 20, файл «Код») - PullRequest
0 голосов
/ 11 февраля 2019

TypeError: Невозможно вызвать метод "getRange" со значением NULL.(строка 20, файл «Код») Мой скрипт выполняется так, как я хочу, но я продолжаю получать вышеуказанную ошибку.У скрипта есть триггер, который запускается по завершении формы, он перемещает данные, а затем возвращает вышеуказанную ошибку. Вот лист

Строка 20:

    var data = sourceSpreadSheetSheetID.getRange(2, 1,sourceSpreadSheetSheetID.getLastRow()-1, sourceSpreadSheetSheetID.getLastColumn()).getValues();

Я проверил названия листов и внес коррективы, но, похоже, что-то упустил.

    function CopyDataToNewFile() {

// How Many Columns over to copy
var columsCopyCount = 4; // A=1 B=2 C=3 ....

// What Column to Monitor
var columnsToMonitor = 3; // A=1 B=2 C=3 ....MONITORS In or Out

//TARGET SPREAD SHEETS
var HallPass = "Hall_Pass"
var CheckOut = "Out";
var CheckIn = "In";

//SOURCE SPREAD SHEET
var ss = SpreadsheetApp.openById('1B93n7wQ8rosmcaqlpgD9FoL1KWfbXALrror7t6r5K2M'); //Need ID from Form response sheet
var sourceSpreadSheetSheetID = ss.getSheetByName(HallPass);
var sourceSpreadSheetSheetID1 = ss.getSheetByName(CheckOut);
var sourceSpreadSheetSheetID2 = ss.getSheetByName(CheckIn);

var data = sourceSpreadSheetSheetID.getRange(2, 1,sourceSpreadSheetSheetID.getLastRow()-1, sourceSpreadSheetSheetID.getLastColumn()).getValues();

var Out = [];
var In = [];


for (var i = 0; i < data.length; i++) {

    var rValue = data[i][2];

    if (rValue == CheckOut) {
        Out.push(data[i]);
    } else if (rValue == CheckIn) {
        In.push(data[i]);

    }
}

if(Out.length > 0){
  sourceSpreadSheetSheetID1.getRange(sourceSpreadSheetSheetID1.getLastRow() + 1, 1, Out.length, Out[0].length).setValues(Out);
  sourceSpreadSheetSheetID.deleteRows(2,sourceSpreadSheetSheetID.getLastRow() - 1);
}

if(In.length > 0){
   sourceSpreadSheetSheetID2.getRange(sourceSpreadSheetSheetID2.getLastRow() + 1, 1, In.length, In[0].length).setValues(In);
   sourceSpreadSheetSheetID.deleteRows(2,sourceSpreadSheetSheetID.getLastRow() -1);
}}

Я бы хотел, чтобы этот скрипт выполнялся без ошибок

1 Ответ

0 голосов
/ 11 февраля 2019

Таким образом, код выглядит так, как будто он должен работать, так как ошибка, которую вы получаете: sourceSpreadSheetSheetID является нулевым значением , поэтому, когда я проверил опубликованную вами таблицу, я заметил, что лист, на который вы ссылаетесьтак как "HallPass" на самом деле называется " Hall_Pass ".В вашем коде вместо передачи переменной HallPass вы даете ей строку "HallPass".Это вызывает проблему.

var ss = SpreadsheetApp.openById('1B93n7wQ8rosmcaqlpgD9FoL1KWfbXALrror7t6r5K2M'); //Need ID from Form response sheet
var sourceSpreadSheetSheetID = ss.getSheetByName(HallPass); //Sheet name was incorrect.
// Did you mean to leave out the Quotations to refer to the variable above?
var sourceSpreadSheetSheetID1 = ss.getSheetByName(CheckOut);
var sourceSpreadSheetSheetID2 = ss.getSheetByName(CheckIn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...