【问题标题】:Script to copy and paste values to the first empty row in Google spreadsheets with zero in front of other numbers将值复制并粘贴到 Google 电子表格中的第一个空行的脚本,其他数字前面有零
【发布时间】:2019-07-02 06:28:33
【问题描述】:

所以代码复制了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]);
}

【问题讨论】:

    标签: google-apps-script google-sheets google-apps


    【解决方案1】:

    这个修改怎么样?我认为您的情况有几种解决方案。所以请认为这只是其中之一。在此修改中,您的脚本中添加了 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
    }
    

    参考资料:

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

    【讨论】:

    • 关闭,但不是我想要的。问题是除了 C2 之外的每个单元格都包含一个公式。此修改复制整个公式,而不是公式提供的文本。
    • @Mantas 对于给您带来的不便,我深表歉意。关于The issue is that every cell except C2 contains a formula.,我无法理解。因为在你的问题中,我找不到这种情况。那么为了正确了解您目前的情况,您能否提供一个可以看到您的情况的示例电子表格?通过这个,我想修改我的答案。如果您能合作解决您的问题,我很高兴。
    • @Mantas 我能问一下您当前的问题吗?如果我的回复有问题,请告诉我。
    【解决方案2】:

    感谢您提供此主题。我有一个稍微不同的问题要解决,但这给了我这样做的灵感,并认为我会分享。每当对电子表格进行编辑时,我想使用 D7:I7 中的现有公式更新 D:I 列。 (在我的情况下,这通常只是将数据添加到新行 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 + '"' );
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多