簡體   English   中英

如何將單元格范圍內的值更改為谷歌 AppScript 中的數據數組?

[英]how to change value in a range of cell to a data array in google AppScript?

如何在單元格范圍內提取數據,然后將這些值推送到數據數組中?

在這段代碼中,我嘗試在 E2:E97 范圍內獲取這些值,然后將這些值推送到數組,例如 [E2 值、E3 值等],然后使用 dataS.getRange(dataS.getLastRow()+ 將值設置為數據庫表1).setValue(值);

但似乎我無法用這些代碼完成它。 所以有什么想法嗎?

// Save Data

function saveData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var formS = ss.getSheetByName("newform");
  var dataS = ss.getSheetByName("newdb");
  var dataBaseNameColIndex = 1;
  var formDataRange = ['E2:E97'];
  var ui = SpreadsheetApp.getUi();
  var response = ui.alert(
    'Save Data ?',
    ui.ButtonSet.YES_NO);

  // Process the user's response.
  if (response == ui.Button.YES) {
    for (var i = 2; i < formDataRange.length; i++) {
      var value = formS.getRange(formDataRange[i], 5).getValue();
      dataS.getRange(dataS.getLastRow() + 1).setValue(value);
      console.log(saveData);
    }
  }
}

與其嘗試逐個單元格地復制和粘貼數據,不如在一個 go 中進行。 那會更有效率。

所以而不是:

  var value = formS.getRange(formDataRange[i], 5).getValue();

您可以在沒有for循環的情況下使用以下內容:

  var allValues = formS.getRange('E2:E97').getValues();

然后像這樣將數據發布到新范圍:

  dataS.getRange(dataS.getLastRow() + 1, 2, allValues.length, allValues[0].length).setValues(value);

我假設您想將數據粘貼到第 2 列以后。 相應地調整上面getRange()中的第二個值。

上面getRange()中的第 3 和第 4 個值是要過去的行數和列數。 allValues.length是數據的行數。 在這種情況下,它將是 95。

allValues[0].length將是復制數據的頂行中的列數。 在這種情況下,它應該是一個。

我建議采用這種方式,因為如果您稍后更改復制范圍尺寸,您將不需要繼續擺弄行數和列數。


PS:

dataS.getRange(dataS.getLastRow() + 1).setValue(value);

缺少getRange()中的列號

暫無
暫無

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

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