このスクリプトを機能させることができないようです。請求目的で使用するテンプレートがあり、そのシートを複製して、毎月末に新しい顧客、契約などの情報を更新しようとしています。「bsf」スプレッドシートのすべての情報が必要ではなく、請求テンプレートで使用された列のみが必要です。私はそれをテストしましたが、すべてが for ループまでは動作しますが、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]]
配列とか宣言する必要があると思うのですが、よくわかりません。配列を追加しようとしましたが、使用しているオブジェクトではうまく機能しないようです。