我似乎无法让这个脚本工作。我有一个模板,我用它来计费,我试图克隆该表,然后在每个月末更新新客户,合同等的信息。我不想要" bsf"的所有信息。电子表格,但只包含我的结算模板中使用的列。我测试了它,一切都可以,但不包括for循环。那里的东西会变得混乱。
使用for循环,我尝试遍历每一列,抓住它,将我的模板文档中的标题与BSF文档进行比较,如果匹配,则将整个列粘贴到我的新结算文档中。如果没有,我希望它继续下一个专栏并做同样的事情。
function newBillingDoc() {
var billingTemplate = SpreadsheetApp.getActiveSpreadsheet();
var destFolder = DriveApp.getFolderById("0B1U5evaRId6xYi1rNGhZbUtBV0U");
var newId = DriveApp.getFileById(billingTemplate.getId()).makeCopy("billing doc template", destFolder).getId();
var billingMaster = SpreadsheetApp.openById(newId).getSheetByName('2016 Master');
billingMaster.clearContents();
var bsf = SpreadsheetApp.openById('1qKaZXpCk7Vw3uvRNft8Cl4vuCC_6PMRR9xyc2tNE7Cc').getSheetByName('Copy of 2016 Master');
var lastRow = bsf.getLastRow();
var lastColumn = bsf.getLastColumn();
var billingHeader = billingTemplate.getSheetByName('2016 Master').getRange('A1:J1').getValue();
billingMaster.getRange('A1:J1').setValue(billingHeader);
for(var j = 1; j < lastColumn; j++); {
var billingBody = billingMaster.getRange(1, j, lastRow, 1);
billingHeader = billingTemplate.getSheetByName('2016 Master').getRange(1, j, 1, 1).getValue();
var masterHeader = bsf.getRange(1, j, 1, 1).getValue();
if (billingHeader == masterHeader) {
var billingBodyChunk = bsf.getRange(1, j, lastRow, 1).getValues();
billingBody.setValues(billingBodyChunk);
}
}
}
当我将billing Header
和masterHeader
放入Logger.log(data)
时,我会得到以下内容:
[16-05-31 16:01:15:403 PDT] [[]]
[16-05-31 16:01:15:403 PDT] [[Percentage]]
我认为我需要声明一个数组或其他东西,但我真的不知道。我尝试添加数组,但它似乎与我正在使用的对象配合得很好。
答案 0 :(得分:0)
看起来您正在比较从master到billing的标头,但是master中的标头永远不会被复制到计费中,因此在for循环中if语句永远不会解析为true。首先尝试复制第1行标题。这应该允许if语句很好。