Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google Sheets,将表单中的数据填充到其他表单上的特定单元格中_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script Google Sheets,将表单中的数据填充到其他表单上的特定单元格中

Google apps script Google Sheets,将表单中的数据填充到其他表单上的特定单元格中,google-apps-script,google-sheets,Google Apps Script,Google Sheets,一般来说,我对编码还不熟悉(除了使用MATLAB的经验,我认为这并不重要),但我开始尝试在GoogleSheetsAPI中编写一些高级功能的代码 我试图写的代码是为了一个电子表格,我跟踪我所有的汽车费用。我现在让它为MPG做了一系列的数字运算,但我不想每次都要找到行和列来输入日期。相反,我想要一张干净、简单的表格,我可以在上面输入变量(行驶里程、泵送加仑数、每加仑汽油的价格、从汽车电脑中估算的MPG),当我点击save时,它会自动用这些信息填充文档中的其他表格,然后清除表格,以便我下次可以再次这

一般来说,我对编码还不熟悉(除了使用MATLAB的经验,我认为这并不重要),但我开始尝试在GoogleSheetsAPI中编写一些高级功能的代码

我试图写的代码是为了一个电子表格,我跟踪我所有的汽车费用。我现在让它为MPG做了一系列的数字运算,但我不想每次都要找到行和列来输入日期。相反,我想要一张干净、简单的表格,我可以在上面输入变量(行驶里程、泵送加仑数、每加仑汽油的价格、从汽车电脑中估算的MPG),当我点击save时,它会自动用这些信息填充文档中的其他表格,然后清除表格,以便我下次可以再次这样做

这是我到目前为止所拥有的

function submitData() {
var ss        = SpreadsheetApp.getActiveSpreadsheet();
var formSS    = ss.getSheetByName('Fill-Up'); //Form Sheet
var datasheet1 = ss.getSheetByName('Mileage Stats'); //Data Sheet 1
var datasheet2 = ss.getSheetByName('Costs and Savings'); //Data Sheet 2

//Input Values 1
var values1 = [[formSS.getRange('B3').getValue(),
             formSS.getRange('B6').getValue()]];

datasheet1.getRange(datasheet1.getLastRow()+1, 2, 1, 2).setValues(values1);

//Input Values 2
var values2 = [[formSS.getRange('B4').getValue(),
             formSS.getRange('B5').getValue()]];

datasheet2.getRange(datasheet2.getLastRow()+1, 2, 1, 2).setValues(values2);
}
除了两个我还没能解决的问题外,它还能工作

1) 它将信息写入页面底部的新行,而不是下一个空行

2) 它没有将B6中的信息写入正确的单元格。我希望B3写在“里程统计”表的B列,B4写在“成本和节约”表的B列,B5写在“成本和节约”表的C列,但B6写在“里程统计”表的C列,但我希望它写在G列,我现在的代码无法改变这一点,或者我能找到的任何其他代码


任何人能给予的任何帮助都会很棒

您是否在试图使用
getLastRow()
的工作表上使用了任何
ArrayFormulas
?如果是这样,
ArrayFormula
将向整个范围的单元格中添加数据

您可能希望使用下面的
Sheet.appendRow()
方法,删除数据表上的所有空行
appendRow()
将在工作表底部添加一个新行,其中包含传递给方法的数据

    datasheet1.appendRow(values1);

    datasheet2.appendRow(values2);

带有函数的单元格被计为数据单元格,这就是为什么要在工作表底部插入行。若要解决此问题,可以使用方法对不带函数的列范围(例如,列B中的单元格)进行排序,该方法返回最后一个单元格,其中包含给定方向的数据。我测试了下面的代码,并将数据插入最后一行,数据在B列:

function submitData() {
  var ss        = SpreadsheetApp.getActiveSpreadsheet();
  var formSS    = ss.getSheetByName('Fill-Up'); //Form Sheet
  var datasheet1 = ss.getSheetByName('Mileage Stats'); //Data Sheet 1
  var datasheet2 = ss.getSheetByName('Costs and Savings'); //Data Sheet 2

  //Input Values 1
  var values1 = [[formSS.getRange('B3').getValue(),
                  formSS.getRange('B6').getValue()]];
  var lastRowInB = datasheet1.getRange("B6").getNextDataCell(SpreadsheetApp.Direction.DOWN).getLastRow();
  datasheet1.getRange(lastRowInB+1, 2, 1, 2).setValues(values1);

  //Input Values 2
  var values2 = [[formSS.getRange('B4').getValue(),
                  formSS.getRange('B5').getValue()]];
  lastRowInB = datasheet1.getRange("B7").getNextDataCell(SpreadsheetApp.Direction.DOWN).getLastRow();
  datasheet2.getRange(lastRowInB+1, 2, 1, 2).setValues(values2);
}

是的,我所在行的其他单元格中都有公式。列A是行中唯一自动填充的列。我编写了一些代码,用行的B列有数据输入的日期自动填充A列。然后C列到F列有计算油箱行驶里程、MPG等的公式。链接到表格:非常感谢!这几乎是完美的。我仍然不知道如何将B6值放入正确的单元格,但它正在写入正确的行。我试着把B3和B6的值分成两个变量,但我显然不知道我在做什么,因为这打破了它。这也破坏了我的日期脚本,但我只是添加了将B2值写入Datasheet1上的a列,并使用=Today()函数自动填充日期值,因此很容易修复。确切的问题是什么?您应该阅读方法文档,了解如何让单元格将值设置为,从而能够根据需要对其进行修复。另外,请阅读有关该方法的文档,或者在您的案例中哪种方法可能更有用。