【问题标题】:Copy and paste script that does not paste all the values不粘贴所有值的复制和粘贴脚本
【发布时间】:2021-07-13 20:59:00
【问题描述】:

我有一个脚本可以复制和粘贴值,但它不会从公式中复制值:

​function onEdit() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() 

if (sheet.getRange("Q17").isChecked() === true) { 
 var s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() s.getRange('F14').setFormula('= IF (O12 = 0; ""; IF (AND (L4 = 0; O4 = 0; L5 = 0); CONCATENATE ("Inventaire effectué le "; TEXT (DATE (YEAR (TODAY ()); MONTH (TODAY ()); DAY (TODAY ())); "dd mmmm yyy"); " recettes automates du jour non intégrées"); CONCATENATE ("Inventaire effectué le "; TEXT (DATE ( YEAR (TODAY ()); MONTH (TODAY ()); DAY (TODAY ())); "dd mmmm yyy"); " recettes du jour intégrées")))');

 coller ()
   } 
 } 

 function coller() {
 var p = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() p.getRange('F5:J14').copyTo(p.getRange('F16'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
 var range = SpreadsheetApp.getActiveSpreadsheet().getRange("R19");   range.setValue("OK, valeurs copiées");
 var range = SpreadsheetApp.getActive().getRange('Q17'); range.uncheck()
 var range = SpreadsheetApp.getActiveSpreadsheet().getRange("F14"); range.setValue(""); 
}​

​公式F14中的结果:

= IF (O12 = 0; ""; IF (AND (L4 = 0; O4 = 0; L5 = 0); CONCATENATE ("Inventaire effectué le "; TEXT (DATE (YEAR (TODAY ()); MONTH (TODAY ()); DAY (TODAY ())); "dd mmmm yyy"); " recettes automates du jour non intégrées"); CONCATENATE ("Inventaire effectué le "; TEXT (DATE ( YEAR (TODAY ()); MONTH (TODAY ()); DAY (TODAY ())); "dd mmmm yyy"); " recettes du jour intégrées")))

https://docs.google.com/spreadsheets/d/1_2m2azh1FEhNgm4X8S5tY_UwOQHDA8K38Ye1YpbSZB4/edit?usp=sharing

【问题讨论】:

  • 你真的不需要额外的功能,你应该将它们结合起来,更好地利用事件对象。另外请组织函数,使单独的命令位于不同的行。

标签: google-apps-script google-sheets


【解决方案1】:

在单元格F14中设置公式后,添加flush()

在这里我更新了您的代码,使其更易于阅读并应用了 flush 方法。

代码:

function onEdit() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() 
  if (sheet.getRange("Q17").isChecked() === true) { 
    sheet.getRange('F14').setFormula('= IF (O12 = 0; ""; IF (AND (L4 = 0; O4 = 0; L5 = 0); CONCATENATE ("Inventaire effectué le "; TEXT (DATE (YEAR (TODAY ()); MONTH (TODAY ()); DAY (TODAY ())); "dd mmmm yyy"); " recettes automates du jour non intégrées"); CONCATENATE ("Inventaire effectué le "; TEXT (DATE ( YEAR (TODAY ()); MONTH (TODAY ()); DAY (TODAY ())); "dd mmmm yyy"); " recettes du jour intégrées")))');
    SpreadsheetApp.flush();    
    sheet.getRange('F5:J14').copyTo(sheet.getRange('F16'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
    var range = SpreadsheetApp.getActiveSpreadsheet().getRange("R19");   
    range.setValue("OK, valeurs copiées");
    range = SpreadsheetApp.getActive().getRange('Q17'); 
    range.uncheck()
    range = SpreadsheetApp.getActiveSpreadsheet().getRange("F14"); 
    range.setValue(""); 
  } 
} 

输出:

【讨论】:

    猜你喜欢
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多