2015-06-15 183 views
1

這是前一篇文章的後續內容,但我無法弄清楚如何將其添加到之前的文章中。這裏是前一篇文章的鏈接。 Copying Data Sheet1 to Sheet2 so you can sort & edit both sheets (google apps script?)如果不是基於多個單元格中的條件複製單元格到另一個單元格

第二部分 由於丹尼爾, 我有以下 Sheet 1上(Participant_Registration)有一個按鈕,當推將一ID兩者到Sheet和到Sheet(Learning_Sessions_Attendance)。 然後,我們使用vlookup函數將sheet1中的列B-D轉換爲sheet2 我編寫了自己的腳本來爲參與者添加說明。

現在,我現在需要幫助。 對原始腳本的小修復 該腳本雖然太棒了,但開始將ID編號設置爲2而不是1。有什麼方法可以解決這個問題嗎?

新腳本 在工作表1(Participant_Registration)上,如果列L,M或N的值爲「Group1」,我希望將ID(在列A中)轉移到sheet3(Consultation1_Attendance)。 如果L,M或N的值=「Group2」,我希望(列A)中的ID轉移到Sheet4(Consultation2_Attendance)。

以下是新腳本的注意事項,這些腳本使我很難編寫它。 在培訓過程中,人們可能會改變羣體,這意味着函數可能需要onEdit函數,並且不能傳輸最後一行。如果身份證尚未在該表單上,則需要轉移活動行並僅將其轉交給諮詢考勤表。 我試過查詢公式 - 不起作用,因爲您無法對諮詢出勤單中的行進行排序,我們正在向該表中添加新數據。

注意:最終我會玩這個腳本有10個可能的諮詢小組。我不確定是否有辦法自動將工作表Consultation1_Attendance複製到組數,並將其填入分配給該組的人員。

以下是表單的鏈接。 https://docs.google.com/spreadsheets/d/1cvKO2tPKeZdLWHc2XVfli8lYVylXCas4VgSG-wB_lLM/edit?usp=sharing

code.gs下的代碼運行。我在代碼中的嘗試在ConsultGpAssign.gs下(他們非常難過)。我只是在學習。我一直在嘗試各種各樣的事情,並可以真正使用幫助。

我也粘貼了一個顯然不在這裏工作的嘗試。

function onEdit(event) { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = event.source.getActiveSheet(); 
    var r = event.source.getActiveRange(); 

    if(s.getName() == "Participant_Registration" && ((r.getColumn() == 12 &&  r.getValue() == "Group1") || (r.getColumn() == 13 && r.getValue() == "Group1") || (r.getColumn() == 14 && r.getValue() == "Group1"))) { 
    var row = r.getRow(); //Not sure if this works 

    //only want to transfer ID column A not sure how to do this 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("Consultation1_Attendance"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 1, 1, numColumns).moveTo(target); //Only want to transfer information if it's not already on sheet. Do not want to delete 
    } 
} 
+0

在設置值之前,您正在增加「最大++」。 71行。將該行超出兩個'setValue()'行,並且編號應該從1開始。但是,您需要在聲明它的同時將一個值分配給'largest'。現在,你通過不分配任何東西來聲明它是未定義的。將'var Biggest;'更改爲'var Biggest = 1;' –

+0

感謝您的建議,但不幸的是它沒有奏效。如果我設置最大= 1,它總是1 var最大= 1。當我將Biggest ++移到SetValue行後時,會發生同樣的事情。我總是可以將1作爲頂部ID作爲解決方案(已經非常幸運地得到了一個計數器的幫助),但我只是覺得有一種方法可以將其編程爲從1開始。 –

+0

在原始腳本,使'var MaxID = 0;'代替'var MaxID = 1;'(這個問題並非完全在Biggest ++中,即使沒有ID,函數getBiggestID也會返回1作爲當前最大的ID) –

回答

0

綜觀這一行:

s.getRange(row, 1, 1, numColumns).moveTo(target); //Only want to transfer information if it's not already on sheet. Do not want to delete 

moveTo()方法切口的範圍內。但是你的評論指出你不想刪除。切割範圍將刪除它。您已經定義了目標範圍。使用getValues()即可獲取要複製的內容:

var myValuesToCopy = s.getRange(row, 1, 1, numColumns).getValues(); 
target.setValues(myValuesToCopy); 
相關問題