[英]fixing my #ERROR in google sheets with google apps script
我有一個谷歌應用程序腳本程序,它查看整個電子表格並將第 5 列中具有空值的行移動到另一個工作表(代碼塊 3)中。
但是,我在轉移時不斷收到#error
,因為在某些行中,某些電話號碼前面有一個 +。 我試圖將整個數字變成一個字符串(帶有 foreach 循環的代碼塊 2),但錯誤仍然存在。
function insertRecord() {
var sheet_2 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
var sheet_1 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var rows = sheet_1.getDataRange().getValues();
rows.forEach(function(element) {
iterator=element.length;
for (i=0;i<iterator+1;i++){
if (typeof element[i]=== Number){
element[i]=element[i].toString
}
}
});
rows
.filter(row => row[5] == '')
.map(row_w_empty5col => sheet_2.appendRow(row_w_empty5col));
}
當我在for (i=0;i<iterator+1;i++){
看到您的腳本時,我認為i<iterator+1
將是i<iterator
。 而且, element[i]=element[i].toString
的toString
將是toString()
。 而且,當在循環中使用appendRow
時,處理成本會很高。 參考
而且,關於moves rows with empty values in column 5 into another sheet
工作表中,在您的腳本中, .filter(row => row[5] == '')
。 在這種情況下,第 6 列被選中。 為了檢查第 5 列(“E”列),它是row[4]
。
從您當前的問題和目標來看,在您的情況下,復制數字格式如何? 當這反映在您的腳本中時,它變成如下。
function insertRecord() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet_2 = ss.getSheets()[1];
var sheet_1 = ss.getSheets()[0];
var range = sheet_1.getDataRange();
var rows = range.getValues();
var f = range.getNumberFormats();
var n = rows.reduce((ar, r, i) => {
if (r[4].toString() == "") ar.push(i);
return ar;
}, []);
var values = n.map(e => rows[e]);
var formats = n.map(e => f[e]);
sheet_2.getRange(sheet_2.getLastRow() + 1, 1, values.length, values[0].length).setValues(values).setNumberFormats(formats);
}
更新:稍微改變了我的代碼,它現在可以工作了。
function emailEditor() {
var app=SpreadsheetApp;
var targetSht=app.getActiveSpreadsheet().getSheetByName('Linkedin Only');
var spreadsheet=app.getActiveSpreadsheet().getSheets().length;
for (i=0;i<spreadsheet;i++){
var shts=app.getActiveSpreadsheet().getSheets()[i];
var originalData=shts.getDataRange().getValues();
var newData=originalData.filter(function(item){
return item[5]===''; //user declared input here
});
var begin=targetSht.getDataRange().getValues().length;
targetSht.getRange(begin+1,1,newData.length,newData[0].length).setValues(newData);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.