当来源是函数(例如NOW())

我试图仅从包含函数NOW()的单元格中复制值。 对于我尝试的所有操作,目标单元格都为空:-(

我尝试过:

  spreadsheet.getRange('K1').activate();
  spreadsheet.getcurrentCell().setvalue('Erstellt am:');
  spreadsheet.getRange('P1').activate();
  spreadsheet.getcurrentCell().setformula('=NOW()');

  spreadsheet.getRange('N1').activate();
  spreadsheet.getRange('P1').copyTo(spreadsheet.getactiveRange(),Spreadsheetapp.CopypasteType.PASTE_VALUES,false);
  spreadsheet.getactiveRangeList().setNumberFormat('dd.MM.yyyy HH:mm:ss');

结果是单元格N1为空。如果我添加以下语句:

spreadsheet.getcurrentCell().setvalue('OTTO');

然后,单元格N1将获得预期的OTTO值。

我还尝试将逻辑外包到这样的单独函数中:

function COPY_DATE() {
  var spreadsheet = Spreadsheetapp.getactive();
  spreadsheet.getRange('N1').activate();
  spreadsheet.getRange('P1').copyTo(spreadsheet.getactiveRange(),false);
  spreadsheet.getactiveRangeList().setNumberFormat('dd.MM.yyyy HH:mm:ss');  
};

这也不起作用。

我也尝试过这种方式:

var source = spreadsheet.getRange ('P1');                                    
source.copyTo (spreadsheet.getRange ('N1'),{contentsonly:true});

一切都无济于事。我真的很想知道这里发生了什么,并感谢任何反馈。

lidongmei0530 回答:当来源是函数(例如NOW())

说实话,我不知道为什么SpreadsheetApp.CopyPasteType.PASTE_VALUES在这里不起作用。

与其尝试这样做,不如尝试另一种方法:使用getValue()setValue()

spreadsheet.getRange('N1').setValue(spreadsheet.getRange('P1').getValue())

我不确定这对您的目的是否有意义,但我也建议您考虑删除其中的许多.activate()电话。如我在this answer中所写,激活基本上仅用于与用户选择进行交互,并且会减慢执行速度。这样,您将调用电子表格服务4次:

  1. 获取范围
  2. 激活范围
  3. 获取激活范围
  4. 对已激活的远程范围进行一些操作

您可以通过简单地获取范围,然后对它执行所需的任何操作来将这些调用减半。然后,您可以将代码简化为以下形式:

spreadsheet.getRange('K1').setValue('Erstellt am:');
var value = spreadsheet.getRange('P1').setFormula('=NOW()').getValue();
spreadsheet.getRange('N1').setValue(value).setNumberFormat('dd.MM.yyyy HH:mm:ss');
,

我测试了以下代码,并且可以完美地将日期值从P1单元格设置为N1单元格

function COPY_DATE() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('N2').activate();
  spreadsheet.getRange('P1').copyTo(spreadsheet.getActiveRange(),SpreadsheetApp.CopyPasteType.PASTE_VALUES,false);
  spreadsheet.getActiveRangeList().setNumberFormat('dd.MM.yyyy HH:mm:ss');  
};

请记住,要使用getActive()类型的函数,需要将脚本绑定到电子表格[1]。

[1] https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getactive

本文链接:https://www.f2er.com/3121500.html

大家都在问