मेरे पास पंक्तियों को स्थानांतरित करने के लिए एक स्क्रिप्ट है जब किसी दिए गए कॉलम में एक निश्चित मान दिखाई देता है, लेकिन मैं केवल कुछ कॉलम को उन पंक्तियों के भीतर ले जाना चाहता हूं।

यह वह स्क्रिप्ट है जिसका मैं वर्तमान में उपयोग कर रहा हूं:

//Move rows to Des tab from Form tab
function moveSafeRows()
{
  var ss=SpreadsheetApp.getActive();
  var sh0=ss.getSheetByName('Form');
  var rg0=sh0.getDataRange();
  var sh1=ss.getSheetByName('Des');
  var vals=rg0.getValues();
  for(var i=vals.length-1;i>0;i--)
  {
    if(vals[i][3]=='Yes')
    {
      sh1.appendRow(vals[i]);
      sh0.deleteRow(i+1)
    }
  }
} 

प्रपत्र टैब में 8 कॉलम हैं, लेकिन मैं केवल कॉलम 1,2,5 में मानों को स्थानांतरित करना चाहता हूं।

मैंने उस स्प्रैडशीट के समान एक कॉपी बनाई, जिस पर मैं काम कर रहा हूं, दूसरे टैब में आउटपुट को सिम्युलेट करते हुए जो मैं देखना चाहता हूं: https://docs.google.com/ स्प्रेडशीट/d/17CRkz71FehikIblgwjHg-r982cUe95WLPI6LiFUr2LI/edit?pli=1#gid=0

1
samu071 11 सितंबर 2020, 19:34

1 उत्तर

सबसे बढ़िया उत्तर

व्याख्या:

आप बहुत करीब हैं।

आप केवल कॉलम 1, 2 और 5 से केवल vals सरणी को तदनुसार काटकर डेटा स्थानांतरित कर सकते हैं:

sh1.appendRow([vals[i][0],vals[i][1],vals[i][4]]);

याद रखें, 0 पहले कॉलम को संदर्भित करता है। इसलिए, हमारे उदाहरण में, हम 0, 1 और 4 में रुचि रखते हैं।


समाधान:

//Move rows to Des tab from Form tab
function moveSafeRows()
{
  var ss=SpreadsheetApp.getActive();
  var sh0=ss.getSheetByName('Form');
  var rg0=sh0.getDataRange();
  var sh1=ss.getSheetByName('Des');
  var vals=rg0.getValues();
  for(var i=vals.length-1;i>0;i--)
  {
    if(vals[i][3]=='Yes')
    {
      sh1.appendRow([vals[i][0],vals[i][1],vals[i][4]]);
      sh0.deleteRow(i+1)
    }
  }
} 
1
Mario 11 सितंबर 2020, 20:42