Javascript 当我将代码从一个工作簿复制到另一个工作簿时,为什么代码会中断?
所以我刚请了五楼的人为我写了这篇文章,效果很好!我让他把它写在我工作需要的那本书的副本上。当我复制到工作中分配给我的文件中时,它在第40行中断。任何和所有的修复将是伟大的强> 我认为它没有选择正确的工作表,因此它正在回退一个空错误 TypeError:无法读取null的属性“getRange” 这是我在运行它之后得到的错误。同样,尽管这在工作簿上有效,我让他设计了它,但我需要知道如何修复它Javascript 当我将代码从一个工作簿复制到另一个工作簿时,为什么代码会中断?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,所以我刚请了五楼的人为我写了这篇文章,效果很好!我让他把它写在我工作需要的那本书的副本上。当我复制到工作中分配给我的文件中时,它在第40行中断。任何和所有的修复将是伟大的 我认为它没有选择正确的工作表,因此它正在回退一个空错误 TypeError:无法读取null的属性“getRange” 这是我在运行它之后得到的错误。同样,尽管这在工作簿上有效,我让他设计了它,但我需要知道如何修复它 // If you want to change any tab's name, also change
// If you want to change any tab's name, also change it from here.
var ss = SpreadsheetApp.getActive();
var tem = ss.getSheetByName("Template");
var frm = ss.getSheetByName("Form Responses 1");
var cde = ss.getSheetByName("Code");
//---------------------------------------------------------------------------------------------------------------------------------------
lr = frm.getLastRow();
// Logger.log(lr)
for(i=4; i<=lr; i++){
//----------These are values from the Form Responses tab, 2,1, 3, 4, 5 ... represent the column numbers.
// For example, date is in column 1, so var date = frm.getRange(i,1).getValue();
// store name is in column 3, so var store = frm.getRange(i,3).getValue();
var tabName = frm.getRange(i,2).getValue();
var date = frm.getRange(i,1).getValue();
var store = frm.getRange(i,3).getValue();
var add1 = frm.getRange(i,4).getValue();
var add2 = frm.getRange(i,5).getValue();
var add3 = frm.getRange(i,6).getValue();
var zip = frm.getRange(i,7).getValue();
var city = frm.getRange(i,8).getValue();
var state = frm.getRange(i,9).getValue();
var phone = frm.getRange(i,10).getValue();
var email = frm.getRange(i,11).getValue();
var po = frm.getRange (i,16).getValue();
var glowHeart = frm.getRange(i,17).getValue();
var glowSquare = frm.getRange(i,18).getValue();
var rainHeart = frm.getRange(i,19).getValue();
var rainSquare = frm.getRange(i,20).getValue();
///-----The following line of code checks if there is already a tab for a store name, if not create new.
if(ss.getSheetByName(tabName)==null && tabName!==""){
var create = ss.insertSheet(tabName);
}
if ( tabName==""){
break;
}
///- - - - - - Now write the row values to the template tab.
tem.getRange("B2").setValue(tabName); // cell B2 is set to name
tem.getRange("B3").setValue(store);// cell B3 is set to store name and so on
tem.getRange("F3").setValue(date);
tem.getRange("B5").setValue(add1);
tem.getRange("B6").setValue(add2);
tem.getRange("B7").setValue(add3);
tem.getRange("B8").setValue(zip);
tem.getRange("B9").setValue(city);
tem.getRange("B10").setValue(state);
tem.getRange("B12").setValue(phone);
tem.getRange("B13").setValue(email);
tem.getRange("C17").setValue(glowHeart);
tem.getRange("C18").setValue(glowSquare);
tem.getRange("D17").setValue(rainHeart);
tem.getRange("D18").setValue(rainSquare);
tem.getRange("F4").setValue(po);
/// Once the template is filled, it is moved to the newly created tab
moveVal(tabName)
// After that, new file is created for that
createNewFile(tabName)
/// These lines clear the template once done.
tem.getRange("B2").setValue("");
tem.getRange("B3").setValue("");
tem.getRange("F3").setValue("");
tem.getRange("B5").setValue("");
tem.getRange("B6").setValue("");
tem.getRange("B7").setValue("");
tem.getRange("B8").setValue("");
tem.getRange("B9").setValue("");
tem.getRange("B10").setValue("");
tem.getRange("B12").setValue("");
tem.getRange("B13").setValue("");
tem.getRange("C17").setValue("");
tem.getRange("C18").setValue("");
tem.getRange("D17").setValue("");
tem.getRange("D18").setValue("");
tem.getRange("F4").setValue("");
}
}
// This fucntion creates new tabs
function moveVal(tabName) {
var ss = SpreadsheetApp.getActive();
var spreadsheet = ss.getSheetByName("Template");
//var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1:G29').activate();
ss.setActiveSheet(ss.getSheetByName(tabName), true);
ss.getRange('Template!A1:G29').copyTo(ss.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
ss.setActiveSheet(ss.getSheetByName('Template'), true);
spreadsheet.getRange('F9').activate();
};
// This fucntion creates new files.
function createNewFile(tabName){
var ss = SpreadsheetApp.getActive();
var cde = ss.getSheetByName("Code");
var newF = SpreadsheetApp.create(tabName);
var dd = newF.getId();
Logger.log(dd)
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheetByName("Price");
var destination = SpreadsheetApp.openById(dd);
sheet.copyTo(destination);
destination.getSheetByName("Copy of Price").setName("Price");
var sheet = source.getSheetByName("Template");
var destination = SpreadsheetApp.openById(dd);
sheet.copyTo(destination);
destination.getSheetByName("Copy of Template").setName(tabName);
destination.getSheetByName("Sheet1").getRange('D26').activate();
destination.deleteActiveSheet();
destination.getSheetByName(tabName).activate()
destination.setActiveSheet(destination.getSheetByName('Price'), true);
destination.getActiveSheet().hideSheet();
sourceFileId =dd;
//targetFolderId = "xxxxxxxxxxxxxx";
////////////////////////////// You can change the cell from here. ////////////
targetFolderId = cde.getRange("G3").getValue(); // This gets the folder's id from cell G3 in Code tab
///..........................................................................................
//Logger.log(targetFolderId)
moveFiles(sourceFileId,targetFolderId)
}
// THis fucntion moves the file to the specified folder.
function moveFiles(sourceFileId,targetFolderId) {
var file = DriveApp.getFileById(sourceFileId);
var folder = DriveApp.getFolderById(targetFolderId);
file.moveTo(folder);
}
从您的
TypeError:cannotread属性'getRange'为null
的错误消息中,再次确认活动电子表格中是否有“Template”工作表名称的工作表?您能否澄清第40行是哪一行?
tem.getRange("B2").setValue(tabName); // cell B2 is set to name
tem.getRange("B3").setValue(store);// cell B3 is set to store name and so on
tem.getRange("F3").setValue(date);
tem.getRange("B5").setValue(add1);
tem.getRange("B6").setValue(add2);
tem.getRange("B7").setValue(add3);
tem.getRange("B8").setValue(zip);
tem.getRange("B9").setValue(city);
tem.getRange("B10").setValue(state);
tem.getRange("B12").setValue(phone);
tem.getRange("B13").setValue(email);
tem.getRange("C17").setValue(glowHeart);
tem.getRange("C18").setValue(glowSquare);
tem.getRange("D17").setValue(rainHeart);
tem.getRange("D18").setValue(rainSquare);
tem.getRange("F4").setValue(po);