用于将值复制并粘贴到 Google 电子表格中第一个空行(其他数字前面为零)的脚本



所以代码复制了Sheet1 B2:G2的内容,B2单元格包含一个通常以多个0开头的代码。在 Sheet1 中一切正常,但是一旦脚本执行并复制到 Sheet2,格式将更改为"自动","000001"变为"1"。我似乎找不到一个可以将其即时格式设置为纯文本以将 0 保持在前面的方法。此外,G 单元格包含 €,所以我不想将整行设置为纯文本,而只是将 B 列设置为纯文本。

function moveValuesOnly() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getRange("Sheet1!B2:G2");
  var destSheet = ss.getSheetByName("Sheet2");
  destSheet.appendRow(source.getValues()[0]);
}

这个修改怎么样?我认为有几种解决方案可以解决您的情况。因此,请将其视为其中之一。在此修改中,脚本中添加了 2 行。

修改点:

  • 运行appendRow()后,"Sheet1!B2:G2"被复制到追加的行中。这样,将显示"000001"。

修改后的脚本:

function moveValuesOnly() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getRange("Sheet1!B2:G2");
  var destSheet = ss.getSheetByName("Sheet2");
  destSheet.appendRow(source.getValues()[0]);
  var destination = destSheet.getRange(destSheet.getLastRow(), 1); // Added
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_FORMAT) // Added
}

引用:

  • 复制到()
  • 枚举复制粘贴类型

如果这不是你想要的结果,请告诉我。我想修改它。

谢谢你的这个线程。我有一个稍微不同的问题需要解决,但这给了我做这件事的灵感,并想我会分享。我想更新列 D:I使用 D7:I7 中的现有公式,随时对电子表格进行编辑。(就我而言,这通常只是将数据添加到新行 A:C。我只希望在修改一个特定的工作表(而不是其他工作表)时触发它。

这似乎做得很好。

   function onEdit(e) {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sName = ss.getSheetName();
  Logger.log('Starting script...');
if (sName == 'Data'){
  Logger.log('We are editing the sheet name: "' + sName +'"'
            );
  var source = ss.getRange("Data!D7:I7");
  var destSheet = ss.getSheetByName("Data");
  var lastRow = destSheet.getLastRow();
  var destination = destSheet.getRange("D"+lastRow);
  destination.activate();
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_FORMULA)
  } else
  Logger.log('Nothing Done. Sheet name: "' + sName + '"' );
}

相关内容

最新更新