我已经搜索了很多论坛,但找不到此问题。
我有一个脚本,可将行从工作表1移动到工作表2。
我要实现的是,当工作表1中的特定单元格被忘记并留空时。
当我运行
moverows()
脚本时,我想检查该行是否有空单元格,并提示对话框中仍然有空白单元格,如果所有单元格都为空,则中止moverows()
脚本。不空白。然后继续,没有对话框。
我希望您可以指出一个方向或指向存在类似问题的线索。
我没有足够的知识来将对话框提示与检查结合起来,并与我现在得到的结合起来:
function Moverows5() {
var ss = SpreadsheetApp.openById('sheetID');
var sourceSheet = ss.getSheetByName("sheetname1");
var targetSheet = ss.getSheetByName("sheetname 2");
var values = sourceSheet.getRange("B8:T43").getValues();
var range0 = sourceSheet.getRange("C8:K43");
var range1 = sourceSheet.getRange("Q8:T43");
var range2 = sourceSheet.getRange("P2");
var range3 = sourceSheet.getRange("R2");
var firstFreeRow = goToFirstRowAfterLastRowWithData(targetSheet, "A:AD");
//check column to whatever column you want to check
targetSheet.getRange(firstFreeRow, 1, values.length, values[0].length) .setValues(values);
range0.clearContent();
range1.clearContent();
range2.clearContent();
range3.clearContent();
createPdf()//function gets started
} //end of first function
function goToFirstRowAfterLastRowWithData(sheet, range) {
var v = sheet.getRange(range).getValues(),l = v.length,r;
while (l > 0) {
if (v[l] && v[l][0].toString().length > 0) {
r = (l + 2);
break;
} else {
l--;
}
}
return r ? r : 'no data found';
}
答案 0 :(得分:0)
此函数检查values数组中是否为空白。如果发现空白,它将警告用户,识别空白单元格并终止该功能。否则,它将进行传输并清除一些范围。
function Moverows5() {
var ss=SpreadsheetApp.getActive();
var sourceSheet=ss.getSheetByName("Sheet1");
var targetSheet=ss.getSheetByName("Sheet2");
var sourceRange=sourceSheet.getRange("B8:T43");
var values=sourceRange.getValues();
var range0=sourceSheet.getRange("C8:K43");
var range1=sourceSheet.getRange("Q8:T43");
var range2=sourceSheet.getRange("P2");
var range3=sourceSheet.getRange("R2");
var firstFreeRow=targetSheet.getLastRow() + 1;
var noBlanks=true;
var bA=[];
var ro=sourceRange.getRow();
var co=sourceRange.getColumn();
for(var ri=0;ri<values.length;ri++) {
for(var ci=0;ci<values[ri].length;ci++) {
if(!values[ri][ci]) {
noBlanks=false;
bA.push(sourceSheet.getRange(ri+ro,ci+co).getA1Notation());
}
}
}
if(noBlanks) {
targetSheet.getRange(firstFreeRow,1,values.length,values[0].length).setValues(values);
range0.clearContent();
range1.clearContent();
range2.clearContent();
range3.clearContent();
//createPdf()//function gets started
}else{
SpreadsheetApp.getUi().alert('Sorry there are blanks in the following cells: ' + bA.join(', '));
return;
}
}
如果您希望在有价值的电子表格上进行测试之前,可以使用此功能创建一些测试数据。
function createTestData() {
var m=1;//0 for random column positions >0 for fixed position
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
sh.clearContents();
var cols=30;//number of columns
var rows=50;//number of rows
var hpref='hdr';
var hA=[];
var hdrA=[];
var cA=[];
for(var i=0;i<cols;i++) {hA.push(i+1);};
for(var i=0;i<cols;i++) {
if(m==0) {
var index=Math.floor(Math.random() * hA.length);
}else{
var index=i;
}
var hnum=hA[index];
hdrA.push(hpref + hnum);
cA.push(hnum);
if(m==0) {
hA.splice(index,1);
}
}
sh.getRange(1,1,1,hdrA.length).setValues([hdrA]);
var rg=sh.getRange(2,1,rows,cols);
var vA=rg.getValues();
for(var i=0;i<rows;i++) {
for(var j=0;j<cols;j++) {
vA[i][j]=Number(i+1) + ',' + cA[j];
}
}
rg.setValues(vA);
sh.getRange("B8:T43").setBackground('#ff00ff');
}