半新秀在這里
我正在嘗試運行一個腳本以將一行從一個電子表格復制到另一個電子表格 - 它最初可以作業,然后出現 TypeError。
型別錯誤:無法讀取未定義 copyrange1 @ onedit destination.gs:26 onEdit @ onedit destination.gs:2 的屬性“長度”
我正在尋找基于單元格 AQ 中的值的具有三個目標作業表的多個函式,然后從源作業表中洗掉該行。
有什么建議?
function onEdit(){
copyrange1();
copyrange2();
copyrange3();
}
function copyrange1() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Position Activity'); //source sheet
var testrange = sheet.getRange('AQ:AQ'); //range to check
var testvalue = (testrange.getValues());
var csh = ss.getSheetByName('Suspended Pending'); //destination sheet
var data = [];
var j =[];
//Condition check in AQ:AQ; If true copy the same row to data array
for (i=0; i<testvalue.length;i ) {
if ( testvalue[i] == 'Suspended - Pending') {
data.push.apply(data,sheet.getRange(i 1,1,1,43).getValues());
//Copy matched ROW numbers to j
j.push(i);
}
}
//Copy data array to destination sheet
csh.getRange(csh.getLastRow() 1,1,data.length,data[0].length).setValues(data);
//Delete matched rows in the source sheet
for (i=0;i<j.length;i ){
var k = j[i] 1;
sheet.deleteRow(k);
//Alter j to account for deleted rows
if (!(i == j.length-1)) {
j[i 1] = j[i 1]-i-1;
}
}
}
提前致謝
uj5u.com熱心網友回復:
問題:
dataAQ:AQ只有在單元格值為 的行中才會填充'Suspended - Pending'。'Suspended - Pending'由于腳本在復制它們后洗掉單元格值所在的行,因此在連續執行data中將保持為空陣列[]。- 如果
data為空,data[0]則未定義,因此它沒有length.
解決方案:
確保data在使用csh.getRange(...).setValues(data);.
function copyrange1() {
// ...stuff...
if (data.length) {
csh.getRange(csh.getLastRow() 1,1,data.length,data[0].length).setValues(data);
// ...more stuff...
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/432776.html
