簡體   English   中英

Google 表格腳本 - 遍歷數組,查找僅包含文本和部分文本的數組項並替換整個項

[英]Google Sheets Script - Loop through array, find array items with only text and partial text and replace whole item

我有一個半工作的代碼,我最后想不通的是如何找到一個包含數字(例如 123)和一些文本(m/s)的數組項並將整個項替換為一個完全空白的數組項目: [] 沒有數字,也沒有 m/s。

我不熟悉大多數術語,並且在這方面完全是新手。 這是我到目前為止所得到的:

function condForm() {
  var sh = ss.getSheetByName('Sheet1');
  var range = sh.getRange("D4:D20"); //*** for the sake of brevity setting to 20 instead of 154
  var values = range.getValues();  
  var row = [];
  var cols = values[0].length;

  for (var i = 0, l = values.length; i < l; i++)
  {
    row = values[i];
    for (var j = 0; j < cols; j++)
    {
      if (row[j] === 'TTK') { row[j] = ''; }
      if(typeof row[j] != "string") { continue; } // line to allow indexOf to work
      if (row[j].indexOf('m/s') > -1) { var newValue = row[j].replace('m/s', '') } //attempting to use indexOf to search for partial match to m/s, does not work but does not return error
    }
  }
Logger.log(values);
}

沒有代碼,記錄器輸出[[400.0], [600.0], [600.0], [600.0], [], [1283 m/s], [TTK], [440.0], [661.0], [771.0], [771.0], [], [960m/s], [TTK], [381.0], [667.0], [667.0]]

使用上面的代碼,output 變為[[400.0], [600.0], [600.0], [600.0], [], [1283m/s], [], [440.0], [661.0], [771.0], [771.0], [], [960m/s], [], [381.0], [667.0], [667.0]] = 相同數量的數組項 = 巨大成功

我試圖使用indexOf來搜索任何包含m/s 的數組項。 它沒有用,但也沒有返回錯誤。 它在做什么? 我在正確的路線上嗎?

我想要一種將[1283m/s][960m/s]變成空白的方法: []

感謝您的閱讀。

我的代碼來自 Max Makhrov: https://stackoverflow.com/a/47575871/1341041

來自 Andres Duartehttps://stackoverflow.com/a/60226151/1341041

據我所知,您正在更改數組row 但是您永遠不會更改數組values

中間可能需要這樣的東西:

...

if (row[j] === 'TTK') { values[i][j] = ''; }
if (typeof row[j] != "string") { continue; }
if (row[j].indexOf('m/s') > -1) { values[i][j] = row[j].replace('m/s', '') }

...

但實際上出於您的目的,我建議使用本機工具TextFinder

function condForm() {
  const sheet = ss.getSheetByName('Sheet1');
  const range = sheet.getRange('D4:D20');
  // range.createTextFinder('m/s').replaceAllWith('');
  range.createTextFinder('.*m/s.*').useRegularExpression(true).replaceAllWith('');
  range.createTextFinder('^TTK$').useRegularExpression(true).replaceAllWith('');
}

https://developers.google.com/apps-script/reference/spreadsheet/text-finder

以防萬一,如果你真的進入嵌套循環,它也可以通過這種方式做得更干凈:

 var values = [[400], [600], [600], [600], [], ['1283 m/s'], ['TTK'], [440], [661], [771], [771], [], ['960m/s'], ['TTK'], [381], [667], [667]]; for (row in values) { for (col in values[row]) { if (values[row][col] == 'TTK') values[row][col] = ''; // values[row][col] = values[row][col].toString().replace(/\s*m\/s/g,''); values[row][col] = values[row][col].toString().replace(/.*m\/s.*/,''); } } console.log(values);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM