0

私の英語でごめんなさい。^^

ええと、シートから別のシートにコピーするスクリプトを見つけました。私の問題は、行を含むコピーです。列をコピーし、スクリプトの実行時に lastcolumn に 2 つの列を追加したいと考えています。

列には通知がないため、問題になりました。A=1、B=2 など。copyTo は A1 通知を必要とします。

私のスクリプトは次のとおりです。

function Archiv() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var target = SpreadsheetApp.openById("sheetid");
var source_sheet = ss.getSheetByName("sheetname");
var target_sheet = target.getSheetByName("sheetnametarget");
var source_range = source_sheet.getRange("D4:E89");
var last_col = target_sheet.getLastColumn();
target_sheet.insertColumnAfter(last_col);
var target_range = target_sheet.getRange(">>>>(lastcol+1)<<<<4:>>>>>(lastcol+2)<<<<89");
source_range.copyTo(target_range, {contentsOnly:true});
}

スクリプトは毎週月曜日に実行して、2 つの列のコンテンツをアーカイブする必要があります。私の願いを理解していただければ幸いです。私は多くのことをテストしましたが、何も役に立ちません。:(

よろしくお願いします。

セバスチャン

4

1 に答える 1

1

行番号と列番号に整数を使用して、物事を非常に単純にする別の範囲選択モードを使用できます。このドキュメントを参照してください。

コードは次のようになります。

function Archiv() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var target = SpreadsheetApp.openById("sheetid");
  var source_sheet = ss.getSheetByName("sheetname");
  var target_sheet = target.getSheetByName("sheetnametarget");
  var source_range = source_sheet.getRange("D4:E89");
  var last_col = target_sheet.getLastColumn();
  while(target_sheet.getMaxColumns()<=last_col+2){// add columns only if necessary
  target_sheet.insertColumnAfter(last_col)}
  var source_values = source_range.getValues();
  var target_range = target_sheet.getRange(4,last_col+1,source_values.length,2);// row Nr4, starting on last column+1, 2 columns width and 89-4 rows heigth
  target_range.setValues(source_values);
}

私は使用getValues()し、setValues()代わりにcopyTo()エラーを返しました:ターゲットとソースは同じスプレッドシートにある必要があります

于 2013-01-09T19:40:14.853 に答える