簡體   English   中英

使用唯一標識符通過Google Apps腳本根據另一個工作表中的數據更新第一工作表中的數據

[英]Update data in 1st sheet based on data from another sheet with google apps script via unique identifier

我在電子表格上有兩張紙。

我從外部API獲取數據的第一張紙,以查看所有即將通過觸發器不斷更新的所有即將到來的類。

id | 開始 完成| 描述1 tig焊接7/6/2013 10:30 7/6/2013 12:30類描述2 tig焊接7/8/2013 10:30 7/8/2013 12:30類描述3 Serger基礎7/8 / 2013 14:30 7/6/2013 16:30課程描述

第二個是靜態類列表,在其中添加了第二列“類別”。

類別tig焊接金屬加工Serger Basics紡織品

我想檢查兩個電子表格中的標題是否匹配,如果匹配,則將類別添加到第一張工作表中,例如:

id | 標題| 開始 完成| 描述| 類別

然后,我將該電子表格作為JSON提供給第三方網絡應用。 聽起來需要做很多工作,但是還沒有提出其他解決方案。 這是進行中的代碼,上面有我的注釋。

function listClasses(){
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0]; //list of all upcoming classes
 var sheet1 = ss.getSheets()[1]; //list of titles

 var data = sheet.getDataRange().getValues(); // read all data in the sheet
 var data1 = sheet1.getDataRange().getValues();

 for(n=1;n<data1.length;++n){
    var title1 = data1[n][0];
    var category = data1[n][1];

  // compare Check if title appears in column A of sheet 2.
  if (ArrayLib.find(data1, 0, title1) != -1) {
    // Yes it does, do something in sheet 0
    for( var row = data.length -1; row >= 0; --row )
      if (data[row][1] == title1){

          var id = data[row][0];
          var title = data[row][1];
          var start = data[row][3];
          var finish = data[row][4];
          var description = data[row][5];
          var category = data1[n][1];

  // and here is where I got stuck!
  data.appendRow([category]); 


}
        }

      }

    }

從您的評論看來,您似乎想在匹配的行上添加一列...您可以在數組級別上很容易地做到這一點,只需在找到匹配項時將值分配給行數組元素即可。 唯一要關心的是每一行(即代表一行的每個數組)必須具有完全相同的長度,否則您將無法正確地將其寫回到工作表中。

您沒有提到的一個細節是類別行是否是最后一行,和/或是否在電子表格上具有標題為“ category”的列名。

在第一個代碼中,我假設您有,那么您可以簡單地使用

    data[row][6]=category;// because data[row][6] already exist in this array because the header defines a range width of (at least) 7 when you used getDataRange()
    ...
    // and after the loop just write back data to sheet like this
    sheet.getRange(1,1,data.length,data[0].length).setValues(data);

如果“類別”列不存在,則應該使用push方法在循環內的第一次運行的每行中添加一個元素以便每一行都存在data[row][6] ...類似這樣:

if(data[row].length<7){data[row].push(' ')};// ensure that data[row][6] does exist

該行應放在迭代數據數組的循環中(索引“行”)

您提供的一些信息很難再進一步,我希望我做出了正確的猜測。

暫無
暫無

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

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