[英]Google Apps Script - Usage of "indexOf" method
第一:我真的很努力地相處,但我更多的是支持者而不是程序員。
我在 Google Calc 中放入了一些 Text 並想檢查“Mueller, Klaus”的出現次數(在數據范圍內出現了 5 次)。 該工作表包含 941 行和 1 列(“A”)。
這是我要找出的代碼:
function countKlaus() {
// Aktives Spreadsheet auswählen
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Aktives Tabellenblatt auswählen
var sheet = ss.getSheetByName("Tabellenblatt1");
var start = 1;
var end = sheet.getLastRow();
var data = sheet.getRange(start,1,end,1).getValues();
var curRow = start;
var cntKlaus = 0;
for( x in data )
{
var value = daten[x];
//ui.alert(value);
if(value.indexOf("Mueller, Klaus")> -1){
cntKlaus = cntKlaus + 1;
}
}
ui.alert(cntKlaus);
}
結果消息為“0”,但應為“5”。
您非常接近解決方案,除了以下兩個問題:
daten[x]
應該替換為data[x]
。
ui.alert(cntKlaus)
應替換為SpreadsheetApp.getUi().alert(cntKlaus)
。
function countKlaus() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Tabellenblatt1");
const cntKlaus = sheet
.getRange('A1:A' + sheet.getLastRow())
.getValues()
.flat()
.filter(r=>r.includes("Mueller, Klaus"))
.length;
SpreadsheetApp.getUi().alert(cntKlaus);
}
您可以省略這個術語+ sheet.getLastRow()
因為我們正在過濾一個非空值。 但我認為首先使用過濾器的數據更少會更快。
參考:
"Mueller, Klaus"
。Mueller, Klaus
是否包含在文本中。僅供參考,如果這對您很重要,我的解決方案可以用一行代碼重寫:
SpreadsheetApp.getUi().alert(SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt1").getRange('A1:A').getValues().flat().filter(r=>r.includes("Mueller, Klaus")).length);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.