2017-04-04 74 views
0

我有一個谷歌電子表格,我還有最後一個問題,我似乎無法來解決。谷歌sheets-環搜索欄,選擇拖

我在這個腳本中添加了一個按鈕,當我按下按鈕時,它觸發AddClient函數。

如何讓下面的腳本在第3列的所有行中循環搜索yes值,當它找到它時,將其下面的行復制到表「客戶端」然後停止?

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

    if(s.getName() == "SETUP" && r.getColumn() == 3 && r.getValue() == "yes")  { 
    var row = r.getRow() + 1; // Add 1 to the active row 
    var targetSheet = ss.getSheetByName("client"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 2, 1, 4).copyTo(target, {contentsOnly:true}); //Only selecting column 2, then the following 4 columns 
    } 
} 

編輯* 實例文檔: https://docs.google.com/spreadsheets/d/1DFbAp0IN8_UFv9u8kWiZBTxDogj4e7FnuAPzC0grDw0/edit?usp=sharing

任何幫助,不勝感激!

乾杯, Reiel

+0

您試圖設計什麼樣的交互?有人在第三欄輸入「是」,該行被複制到另一個表單中? –

+0

對不起,現在我更不清楚了,你是否有一個按鈕,劇本應該複製一切是或是否總是有一個是的,並且每行都有一個按鈕? –

+0

也許截圖,甚至更好的試算表將有助於 –

回答

0
  • 既然你有一個靜態的形式進行復制的informatin的立場不會改變
  • 因爲我們知道我們想要對我們不會需要將數據複製做我們其中任何驗證,因此所有的這些東西可以去
  • 表有一個appendRow方法採取參與發現最後一排的簿記照顧

這使我們能夠簡化腳本如下:

function AddClient() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var data = ss.getSheetByName("SETUP").getRange(25, 2, 1, 4).getValues()[0]; 
    ss.getSheetByName("client").appendRow(data); 
} 

編輯: 刪除重複,你可以做到以下幾點:對於具體的例子也存在一些問題,因爲

function AddClient() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var data = ss.getSheetByName("SETUP").getRange(25, 2, 1, 4).getValues()[0]; 
    var clients = ss.getSheetByName("client").getDataRange().getValues(); 

    if (!clients.filter(function(row) {return data.join("|") === row.join("|");})) { 
    ss.getSheetByName("client").appendRow(data); 
    } 
} 

注前導零被切斷。表格有點奇怪,有時甚至在您將單元格的格式設置爲文本時嘗試強制將該格式設置爲數字...

+0

非常好的解決方案,因爲我改變了方向與按鈕的一半,我有一個想法,它可以優化很多..謝謝一堆! 是否可以使它檢查雙重輸入並編輯輸出的格式? – user2765075

+0

請檢查我的更新回答 –

+0

感謝您花時間幫助解決這個問題! 假設檢測重複的腳本不起作用。它甚至不會追加新的數據。 此外,當我使用:'.copyTo(target,{contentsOnly:true})'contentsOnly解決了我的格式。這是一個更好的解決方案來實現我所需要的? 由於這是對客戶的出價,因此格式化非常重要。也許最重要的是在郵政編碼爲0。 – user2765075