将电子表格的一个单元格复制到另一个电子表格

时间:2015-11-03 14:38:39

标签: google-apps-script google-sheets

我知道它看起来很熟悉,但我已尽力寻找答案。 我试图将一个单元格中的一个单元格提取到另一个文件中的另一个单元格中。到目前为止我在这里:

var sss =     SpreadsheetApp.openById("1mUEV_fVf1eP3iBQImkSzf598r8d5wGSRhqLteS9iQaM");
var ss = sss.getSheetByName("Sheet1"); 
var tss = SpreadsheetApp.openById("1qGBfc__YkOJNqcH0eWLbZW9pnTS6fqXRHnHRDMTkmIw");
var ts = tss.getSheetByName("mysheet");

var SRange = ss.getRange('H27');
var A1Range = SRange.getA1Notation();
var SData = SRange.getValues();
ts.clear({contentsOnly: true});
ts.getRange(A1Range).setValues(SData);

问题是它是将数据从H27复制到其他H27。我正在尝试从Sheet1的H27复制数据并将其放在mysheet的AZ49上?

2 个答案:

答案 0 :(得分:0)

您只想将数据从一张纸复制到另一张纸上吗?并将H27的值放在AZ49?中,这张表是在一个电子表格上吗?你可以试试这个,

{{1}}

答案 1 :(得分:0)

  

问题是它是将数据从H27复制到其他H27。

这是因为您开始使用的代码假定您想要匹配源表和目标表中的单元格,并使用这些说明执行此操作:

var A1Range = SRange.getA1Notation();    // Get text describing source range
...
ts.getRange(A1Range)...                  // Get same range on dest sheet
  

我正在尝试从Sheet1的H27复制数据并将其放在mysheet的AZ49

您只需要更改A1Range的设置方式。

var A1Range = 'AZ49';

由于您正在处理单个单元格的范围,因此您只需要处理单个数据值而不是仅包含一个项目的二维数组。将getValues()替换为getValue(),将setValues()替换为setValue()clear()方法毫无意义,因为您可以立即将新值写入单元格,因此可以将其删除。

这解释并解决了您的问题。还有一件事;我建议您对变量名称更加小心,以便它们有助于理解您的代码。例如,由于SRange初始化为,因此名称令人困惑; SValue会更清楚。

var SRange = ss.getRange('H27');
var DRangeA1 = 'AZ49';
var SValue = SRange.getValue();
ts.getRange(DRangeA1).setValue(SValue);