簡體   English   中英

如何使用 Google Script 從 Google 表格中提取特定列?

[英]How do I extract a specific Column from google sheets using Google Script?

所以我有一個由谷歌表單提供的膳食庫存電子表格。 員工每天晚上在一天結束時計算膳食,每列的每個第二個單元格都有一個標題:初始,星期一,星期二你明白了。 我想在某些商品快速售出時通知自己,以便補貨。 我的問題是我可以使用

.getLastColumn();

但我想基於最近列的每個 lastColumn 數據,該列的第二個單元格中有“Initial”,並將它們放在單獨的工作表上的 2 列數組中。 有任何想法嗎? 到目前為止,這是我的腳本;

 function activeData() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var Sheet = ss.getSheetByName("IREmaildata"); var lastCol = Sheet.getLastColumn(); var rangeInitial = Sheet.getDataRange(); // Not sure if this would be correct? var initial = rangeInitial.getValues(); var int = "Initial"; //the 3rd cell in "Initial" column must say "Initial". var rangeLastnight = Sheet.getRange(1,lastCol,37,1); //I can easily get the data from the most recent googleForm submission. var lastNight = rangeLastnight.getValues(); //I can easily get the data from the most recent googleForm submission. /* probably some type of logic will go here? */ ss.getSheetByName("Sheet5").getRange(1,2,37,1).setValues(yesterday); ss.getSheetByName("Sheet5").getRange(1,3,37,1).setValues(today); }

我的電子表格; https://docs.google.com/spreadsheets/d/1X_UcqyXXRMyjZ2j46TymMrIMWvt19HOZTTaEUlIVqwE/edit?usp=sharing

  • 在您共享的電子表格中, IREmaildataSheet5的工作表分別是您期望的輸入和輸出。
  • 從共享的電子表格中,您希望從工作表IREmaildata檢索值。
    • 您想檢索最后一列( Most recent Night Dynamic Column ),並檢索在第 2 行具有Initial且離最后一列最近的列( Begining of the week Dynamic Column )。 和列“A”。
    • 並且您想將計算出的值放入新列( Precenatage sold Static Column )。
    • 對於您的共享電子表格,您希望將“A”、“V”、“Y”列和計算值檢索到電子表格中的另一個工作表。
  • 您想使用 Google Apps 腳本來實現這一點。

如果我的理解是正確的,這個答案怎么樣? 請將此視為幾種可能的答案之一。

流動:

此示例腳本的流程如下。

  1. 從工作表IREmaildata的數據范圍中檢索值。
  2. 從值中檢索最后一列的索引。
  3. 檢索第 2 行值為Initial的列的索引。
  4. 檢索列“A”,即在第 2 行具有Initial值的列的索引,即最后一列的索引。
  5. 計算百分比並將值放入數組以放入電子表格。
  6. 將結果值放入電子表格。

示例腳本:

請將以下腳本復制並粘貼到共享電子表格的容器綁定腳本中。 並請准備目標工作表並將目標工作表名稱設置為destSheetName ,並運行函數activeData

function activeData() {
  var destSheetName = "###";  // Please set the destination sheet name.

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("IREmaildata");
  var values = sheet.getDataRange().getValues();
  var lastColumnIndex = values[1].length - 1;
  var initialIndex = 0;
  for (var i = lastColumnIndex - 1; i >= 0; i--) {
    if (values[1][i] == "Initial") {
      initialIndex = i;
      break;
    }
  }
  var result = values.map(function(row, i) {
    var ar = [row[0], row[initialIndex], row[lastColumnIndex]];
    if (i == 0) {
      ar.push("");
    } else if (i == 1) {
      ar.push("Since Begining of week");
    } else if (i > 1) {
      var temp = 1 - (row[lastColumnIndex] / row[initialIndex]);
      ar.push(isNaN(temp) ? "None sold" : temp);
    }
    return ar;
  });
  var destSheet = ss.getSheetByName(destSheetName);
  destSheet.getRange("D3:D").setNumberFormat("0.00%");
  destSheet.getRange(1, 1, result.length, result[0].length).setValues(result);
}

筆記:

  • 在上面的腳本中, getValues()用於從工作表IREmaildata檢索值。 在這種情況下,日期值作為日期對象被檢索。 例如,如果要修復日期格式,請修改var values = sheet.getDataRange().getValues(); var values = sheet.getDataRange().getDisplayValues(); .

參考:

暫無
暫無

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

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