簡體   English   中英

如何在 Google Apps Script 中獲取范圍然后設置值

[英]How to get range and then set value in Google Apps Script

我正在嘗試在編輯時運行一個函數,該函數將在一系列單元格中查找值“c”,然后將其替換為“關閉”一詞。

這是我到目前為止:

function onEdit(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getRange('CA12:CA15').getValues();
  var closed = 'c'
  for(var i=0; i<data.length;i++) {
  if(data[i] == closed) {

    Logger.log('yes')
    Logger.log(data[i]);    
  }
    }
  }

因此,當我在給定范圍內具有此值時,這將成功記錄“是”和值“c”。 但是我現在如何替換這個值?

我嘗試使用 getRange() 存儲數據范圍 [i] 但它不允許我這樣做。 如果我能得到這個范圍,那么我知道我可以使用 range.setValue('Closed') 但現在有點卡住了。 我知道我正在做一些非常簡單非常錯誤的事情,但任何幫助都會很棒。

關鍵點:

  • getValues返回一個按行和列排序的二維數組。 您正在使用data[i]訪問一維數組
  • i數組 + 起始行的索引等於循環中的當前行。

代碼片段(慢):

if(data[i][0] == closed) { //2D
 sheet.getRange('CA'+(12+i)).setValue('Closed');
}
  • 但是上面很慢,因為我們為每個真條件調用 setValue() 。 更好的方法是使用數組。

代碼片段(快速 70 倍):

var rng =sheet.getRange('CA12:CA15');
var data = rng.getValues();
var output = data.map(function(e) { return e[0] == closed ? ['Closed'] : e });
rng.setValues(output); //Single call
  • 最快的方法是從工作表 UI 或 API 中使用查找和替換

基本閱讀:

嘗試這個:

function onEdit(e) {
  var sheet = e.range.getSheet();
  var editedCell=sheet.getRange(e.range.getRow(),e.range.getColumn()).getA1Notation();
  var data = sheet.getDataRange().getValues();
  var found=false;
  var foundA=[];
  for(var i=0;i<data.length;i++) {

    if(data[i][2] == 'c') {
      found=true;
      foundA.push(i+1);
    }
  }
  if(found){
    Logger.log('Matches found in following rows of column C: %s\nCell Edited was: %s',foundA.join(','),editedCell);
  }else{
    Logger.log('No matches found');
  }

}

出於測試目的,您可以使用SpreadsheetApp.getUi().alert(Logger.getLog()); 顯示記錄器結果。

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getRange('C2:C').getValues();
  var name = valuetosearchincColumnC;
  for(var i=0; i<data.length;i++) {
    if(data[i] == name) {
      
      var id = i + 2;// plus two bec i have a header
      sheet.getRange(id,2).setValue('ValuetoChange');
    }
  }

暫無
暫無

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

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