Javascript 在Google应用程序脚本中找不到范围。如何做一个循环?
我正在尝试执行以下代码,但它对我不起作用 我为Google Sheets录制了一个宏,它有以下代码Javascript 在Google应用程序脚本中找不到范围。如何做一个循环?,javascript,google-apps-script,Javascript,Google Apps Script,我正在尝试执行以下代码,但它对我不起作用 我为Google Sheets录制了一个宏,它有以下代码 /** @OnlyCurrentDoc */ function ValidacionDatos() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('D3').activate(); spreadsheet.getRange('D3').setDataValidation(Spreads
/** @OnlyCurrentDoc */
function ValidacionDatos() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('D3').activate();
spreadsheet.getRange('D3').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(true)
.requireValueInRange(spreadsheet.getRange('Main!$F$3:$H$3'), true)
.build());
spreadsheet.getRange('D3').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(true)
.requireValueInRange(spreadsheet.getRange('Main!$F$3:$H$3'), true)
.build());
spreadsheet.getRange('D4').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(true)
.requireValueInRange(spreadsheet.getRange('Main!$F$4:$H$4'), true)
.build());
spreadsheet.getRange('D5').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(true)
.requireValueInRange(spreadsheet.getRange('Main!$F$5:$H$5'), true)
.build());
};
。。。等等,直到77岁
我想知道如何循环到第77行,而不必编写这么多代码
我写过这样的话:
function ValidacionDatosBucle() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('D5').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Desarrollo'), true);
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('D5').activate();
var numfila = 3;
while (numfila < 10){
spreadsheet.getRange('D5').activate();
spreadsheet.getRange('D5').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(true)
.requireValueInRange(spreadsheet.getRange('Main!$F$'&numfila&':$H$'&numfila), true)
.build());
numfila = numfila++
}
函数ValidacionDatosBucle(){
var电子表格=SpreadsheetApp.getActive();
电子表格.getRange('D5').activate();
电子表格.setActiveSheet(电子表格.getSheetByName('Desarrollo'),true);
var电子表格=SpreadsheetApp.getActive();
电子表格.getRange('D5').activate();
var numfila=3;
而(努姆菲拉<10){
电子表格.getRange('D5').activate();
电子表格.getRange('D5').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(true)
.requirewaeinrange(spreadsheet.getRange('Main!$F$'&numfila&':$H$'&numfila),true)
.build());
numfila=numfila++
}
我得到了一个错误:在第10行,文件宏中找不到范围,我想您需要的是将D列限制为Main上等效行的F到H中的值 如果是这样的话,这就是你要做的:
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getActiveSheet(); // THIS SHEET
var os = sh.getSheetByName("Main"); // THE MAIN SHEET WITH VALIDATION VALUES
var data = os.getRange("F:H").getValues();//VALIDATION VALUES
for (var i=2; i<ss.getLastRow;i++) //lets go through your entire current sheet, starts in row 2)
{
var options = data[i-1];//get validatoins for just this row, offset because array
var dv = SpreadsheetApp.newDataValidation();
dv.setAllowInvalid(false);
dv.requireValueInList(options, true);
ss.getRange(i,4).setDataValidation(dv);
}//for loop
var sh=SpreadsheetApp.getActiveSpreadsheet();
var ss=sh.getActiveSheet();//此工作表
var os=sh.getSheetByName(“Main”);//带有验证值的主工作表
var data=os.getRange(“F:H”).getValues();//验证值
对于(var i=2;i谢谢您的回复
我试图通过应用data validation-List from interval来完成某一列的单元格。必须将此时间间隔指定给相应列的每个单元格,例如D列。这是为了创建一个条件下拉列表
最后,我做了以下工作:
function Validacion2() {
var spreadsheet = SpreadsheetApp.getActive();
var fila = 3
var col = 'D'
var hoja = 'Main'
spreadsheet.getRange('C8:C10').activate();
while (fila < 14){
spreadsheet.setActiveSheet(spreadsheet.getSheetByName(hoja), true);
spreadsheet.getRange('F'+fila+':H'+fila).activate();
spreadsheet.getRange('D'+fila).setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(true)
.requireValueInRange(spreadsheet.getRange(hoja+'!$F$'+fila+':$H$'+fila), true)
.build());
fila = fila+=1
}
};
函数Validacion2(){
var电子表格=SpreadsheetApp.getActive();
var fila=3
var col='D'
var hoja='Main'
电子表格.getRange('C8:C10').activate();
而(fila<14){
电子表格.setActiveSheet(电子表格.getSheetByName(hoja),true);
getRange('F'+fila+':H'+fila).activate();
电子表格.getRange('D'+fila).setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(true)
.requireRewaeInRange(电子表格.getRange(hoja+'!$F$'+fila+':$H$'+fila),true)
.build());
菲拉=菲拉+=1
}
};
验证字段的位置是什么?I整个列的验证字段位置相同,还是在向下移动时发生变化?您想做什么?