使用 google sheet appscript,我試圖在 E 列中搜索以“XYZ”開頭的單元格,然后我想將整行移到頂部。
這是我到目前為止創建的:
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var Today = spreadsheet.getSheetByName("Today");
var TodayList = Today.getRange('E:E').getValues();
TodayList.forEach(([e], i) => {
if (/^X|^XYZ/.test(e[0])) {
var row = i 1;
Today.moveRows(Today.getRange(`${row}:${row}`), 6);
}
});
但是,這也會將所有以“X”開頭的條目移動到頂部。我只想移動以“XYZ”開頭的條目。
感謝用戶 @Tanaike 在這一點上幫助我。
uj5u.com熱心網友回復:
在您的情況下,如何進行以下修改?
從:
if (/^X|^XYZ/.test(e[0])) {
至:
if (/^XYZ/.test(e)) {
或者
if (e.slice(0, 3) == "XYZ") {
筆記:
在您的腳本中,
eofTodayList.forEach(([e], i) => {是單元格值。并且,e[0]是單元格值的頂部字符。以此,/^X|^XYZ/.test(e[0])永遠是false。這是你的問題的原因。而且,這是我抄錯的。所以,為了檢查單元格值,我修改e[0]為e.例如,如果要檢查 和 的兩個大寫字母的行
XYZ,X可以使用if (/^X|^XYZ/.test(e)) {
參考:
- 測驗()
- 片()
uj5u.com熱心網友回復:
移至頂部
function myfunk() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Sheet0");
const vs = sh.getRange(1, 1, sh.getLastRow(), sh.getLastColumn()).getValues();
let a = [];
let d = 0;
vs.forEach((r, i) => {
if (~r[4].toString().indexOf("xyz") || ~r[4].toString().indexOf("xy")) {
a.push(r);
sh.deleteRow(i 1 - d );
}
});
if(a) {
sh.insertRowsBefore(1, a.length);
sh.getRange(1, 1, a.length, a[0].length).setValues(a);
}
}
你也可以這樣做
function myfunk() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Sheet0");
const vs = sh.getRange(1, 1, sh.getLastRow(), sh.getLastColumn()).getValues();
let a = [];
let d = 0;
vs.forEach((r, i) => {
if (r[4].toString().match(/xyz|xy/g)) {
a.push(r);
sh.deleteRow(i 1 - d );
}
});
if (a) {
sh.insertRowsBefore(1, a.length);
sh.getRange(1, 1, a.length, a[0].length).setValues(a)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485781.html
