如果函数正确执行,则将值移动到不同的范围

时间:2015-10-26 10:17:34

标签: javascript google-apps-script google-sheets spreadsheet

我有两个工作表,第一个使用不同的公式连接第三方生成/验证电子邮件地址是否有效。这发生在F列中,它使用粘贴到D列中的“域”来运行该功能。无论如何,一旦工作表运行了所有公式并得到了结果,它就会输出0-1之间的分数。

现在,我想要位于B,C,D和B列中的所有细节(姓名,电子邮件,公司,域名)。 F将干净地输入到工作表2中的B,C,D,E列中。

到目前为止,这是我的代码,但它似乎不起作用 - 不太确定。

function ouput(){
  var sheet  = SpreadsheetApp.getActive().getSheetByName('Output Clean Data      to ESP').getRange('B2:E100').getValues();
  var sendex = SpreadsheetApp.getActive().getSheetByName('Email Scraper &  Verifier Custom').getRange('U2:U100').getValues();
  var leads  = SpreadsheetApp.getActive().getSheetByName('Email Scraper &   Verifier Custom').getRange('B2:D100').getValues();

  if (sendex > 0.8) {
    for (var i = 0;i<leads;i++)
      break;
    leads.CopyTo(sheet)     
  }
}

2 个答案:

答案 0 :(得分:0)

  1. sendex是一个数组,不能只有一个值,它的计算结果为false,函数结束
  2. 如果它不会评估为false,则会调用一个立即断开的循环,然后将所有潜在客户复制到输出表。
  3. 你想做点什么:

    for (var lead = 0; lead < leads.length; lead++){
      if (sendex[lead] > 0.8){
        sheet.push(leads[lead]);
      }
    }
    SpreadsheetApp.getActive().getSheetByName('Output Clean Data      to ESP').getRange(2,2,sheet.length,4).setValues(sheet)
    

    ? (请注意,此功能目前总是会获得2:100的范围并附加并覆盖新的得分线索,但我不确定您是否已经在copyTo中处理了这个问题)

答案 1 :(得分:0)

谢谢!我最终让它工作的方式是使用以下代码。它更好地将getrange值保留在变量中并在以后定义它们。

destrow只管理空行并跳过它们。

function output() 
{
var sheet = SpreadsheetApp.getActive().getSheetByName('Output Clean Data to    ESP');

var sendex = SpreadsheetApp.getActive().getSheetByName('Email Scraper &  Verifier Custom').getRange('U2:U100').getValues();
var leads = SpreadsheetApp.getActive().getSheetByName('Email Scraper & Verifier Custom')

var destRow = 2;

for (var i = 0; i < sendex.length; i++)  
{
if (sendex[i] > 0.74){

  var row = 2 + i;

  leads.getRange(row, 2, 1, 3).copyTo(sheet.getRange(destRow, 1, 1, 3),{contentsOnly:true})
  leads.getRange(row, 6, 1, 1).copyTo(sheet.getRange(destRow, 4, 1, 1),{contentsOnly:true})      

  destRow += 1;

}
 }
  {


 }

}