从行数可变的源导入范围?

时间:2019-06-12 09:08:16

标签: google-apps-script google-sheets google-sheets-formula importrange

我刚开始使用Googlescript,所以请问一个简单的问题:我想使用IMPORTRANGE()将数据从一个googlesheet导入到另一个googlesheet。源googlesheet的源范围可以填充1到6行(可变),但是我的目标googlesheet的目标范围只能有非空行。

var urlsheet=SpreadsheetApp.getActive().getSheetByName('Enter Report URL');

// the URL of the source Googlesheet is pasted in cell A5 of the target Googlesheet:'Enter Report URL'

var cell20=urlsheet.getRange("A5");

var cellB20value=cell20.getValue();

// then I use the Importrange formula on the cell with the URL and paste it in cell A20 which gives me the importrange of the source sheet

var temptarget=urlsheet.getRange("A20");
    temptarget.setFormula('=IMPORTRANGE('+cellB20value+',"Admin Use Only!A4:U9")');

//Finally, I paste the Importrange from A20 in the last row of my target sheet:

var Creditdetail=SpreadsheetApp.getActive().getSheetByName('Credit_Detail');

var lastrowcredit= Creditdetail.getLastRow()+1;

var finaltarget=Creditdetail.getRange(lastrowcredit,1);

  temptarget.copyTo(finaltarget, {contentOnly:true});

但这会继续添加我要求的6行(源表中的A4到U9)...

有人可以帮我弄清楚如何仅导入非空行吗?

1 个答案:

答案 0 :(得分:0)

IMPORTRANGE将导入指定为第二个参数的引用所包含的所有值。

基本上有两个可选路径:

  • 在导入数据之前先过滤数据,例如,使用FILTERQUERY等,然后使用保存结果的范围的引用,或者使用Google Apps脚本获取getValues / getDisplayValues,然后使用Array.prototype.filter(callback)之类的JavaScript方法进行过滤。
  • 过滤导入后的数据,即如果使用QUERY(如果对同一公式进行处理),则过滤数据FILTER(如果使用其他公式进行的处理)。