GAS 将数据复制到另一个具有货币和百分比格式的电子表格

GAS Copy Data to another Spreadsheet with currency and percent format

我有一段代码可以使用 moveTo() 函数将数据从一个传播sheet 复制到另一个传播。数据由 $ 和 % 组成,但格式不会复制到第二个 sheet。

有没有第二个sheet到"hard set"的格式?或者我有更好的方法来做到这一点吗?

注意** 无论出于何种原因,此代码块在旧的 sheet 上运行完美,但在我移至新的 sheet 时停止了。

//Get full range of data
  var SRange = ss.getRange('B3:B9');
  var EndInv = ss.getRange('B11:B15');
  var Theoretical = ss.getRange('B17:B21');
  var Purchases = costReportPurchases.getRange('D12:D16');

//get A1 notation identifying the range
  var A1Range = SRange.getA1Notation();
  var EndInvRange = EndInv.getA1Notation();
  var TheoreticalRange = Theoretical.getA1Notation();
  var PurchasesRange = Purchases.getA1Notation();

//get the data values in range
  var SData = SRange.getValues();
  var EndInvData = EndInv.getValues();
  var TheoreticalData = Theoretical.getValues();
  var PurchasesData = Purchases.getValues();

//Makes the move to the second sheet
  var tss = SpreadsheetApp.openById('xxxxxxxxxx'); // tss = target spreadsheet - Snap Shot
  var ts = tss.getSheetByName('CompanySnapShot'); // ts = target sheet
  var cedarvilleCOGS = ts.getRange('F55:F61'); //Sets range on Snap Shot
  var cedarvilleEndInv = ts.getRange('F64:F68'); //Sets range on Snap Shot
  var cedarvilleTheoretical = ts.getRange('F93:F97'); //Sets range on Snap Shot
  var cedarvillePurchases = ts.getRange('F107:F111'); //Sets range on Snap Shot
  ts.getRange(A1Range).setValues(SData).moveTo(cedarvilleCOGS);
  ts.getRange(EndInvRange).setValues(EndInvData).moveTo(cedarvilleEndInv);
  ts.getRange(TheoreticalRange).setValues(TheoreticalData).moveTo(cedarvilleTheoretical);
  ts.getRange(PurchasesRange).setValues(PurchasesData).moveTo(cedarvillePurchases);

当我遇到同样的问题时,我在写入值后使用了copyFormatToRange

读一读。 Google app guide to copyFormatToRange

举个例子。

 ts.getRange(A1Range).setValues(SData).moveTo(cedarvilleCOGS);
 srange.copyFormatToRange(CompanySnapShot,6,6,55,61);

应该(我希望从源范围复制格式。并将其应用于目标。

我还没有测试上面的代码,

您还可以查看使用 NamedRanges,然后在写入数据后设置格式。

所以我通过调用方法找到了答案setNumberFormats()

//This is for % based numbers
var formatFoodPercentPWSouth = [["00.00%","00.00%","00.00%","00.00%","00.00%","00.00%","00.00%",]];
  var rangeFoodPercentPWSouth = CompanySnapShot.getRange("B75:H75");
  rangeFoodPercentPWSouth.setNumberFormats(formatFoodPercentPWSouth);

//This is for $ based numbers
var formatLiquorDollarsEndingInventorySouth = [["[=10=],000.00","[=10=],000.00","[=10=],000.00","[=10=],000.00","[=10=],000.00","[=10=],000.00","[=10=],000.00",]];
 var rangeLiquorDollarEndingInventorySouth = CompanySnapShot.getRange("B79:H79");
 rangeLiquorDollarEndingInventorySouth.setNumberFormats(formatLiquorDollarsEndingInventorySouth);