Google 工作表脚本未输出到数据表
Google Sheets Script Not Outputting to Datasheet
我目前遇到这个基本上只是复制和粘贴输入数据的简单脚本的问题。
由于某种原因,该函数将值输入到“销售日志”选项卡而不是“支付日志”选项卡。我不精通任何形式的编码,因此非常感谢您的帮助!
function submit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Food Sales");
var datasheet = ss.getSheetByName("Pay Log");
var datasheet = ss.getSheetByName("Sales Log");
var values = [[formSS.getRange("E10").getValue(),
formSS.getRange("E11").getValue(),
formSS.getRange("E12").getValue()]];
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 3).setValues(values);
}
这是因为您对两个不同的 sheet 使用相同的变量 dataSheet。
在行 var datasheet = ss.getSheetByName("Pay Log");
上,您在数据 sheet 上分配了 Pay Log sheet,但随后将其替换为 Sales Log sheet 在下一行 var datasheet = ss.getSheetByName("Sales Log");
您可以做的是在粘贴之前为两个 sheet 创建和分配不同的变量。简单的方法是通过下面的代码。
function submit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Food Sales");
var datasheet1 = ss.getSheetByName("Pay Log");
var datasheet2 = ss.getSheetByName("Sales Log");
var values = [[formSS.getRange("E10").getValue(),
formSS.getRange("E11").getValue(),
formSS.getRange("E12").getValue()]];
datasheet1.getRange(datasheet1.getLastRow()+1, 1, 1, 3).setValues(values);
datasheet2.getRange(datasheet2.getLastRow()+1, 1, 1, 3).setValues(values);
}
或者如果您有更多 sheet 可以粘贴您的数据,您可以使用 getSheets()
函数,它将 return 一个包含所有 sheet 的数组]s。然后,您可以从第二个 sheet 开始循环遍历 sheet。下面的示例代码
function submit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Food Sales");
var dataSheet = ss.getSheets();
var values = [[formSS.getRange("E10").getValue(),
formSS.getRange("E11").getValue(),
formSS.getRange("E12").getValue()]];
for (i = 1; i < dataSheet.length; i++){
dataSheet[i].getRange(dataSheet[i].getLastRow()+1, 1, 1, 3).setValues(values);
};
};
- 有关 Class 传播sheet 的更多详细信息,请参阅此 link:https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getsheets
使用 getValues
function submit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Food Sales");
var datasheet1 = ss.getSheetByName("Pay Log");
var datasheet2 = ss.getSheetByName("Sales Log");
var values = formSS.getRange(10, 5, 3).getValues();//getValues()
datasheet1.getRange(datasheet1.getLastRow() + 1, 1, 1, 3).setValues(values);
datasheet2.getRange(datasheet2.getLastRow() + 1, 1, 1, 3).setValues(values);
}
我目前遇到这个基本上只是复制和粘贴输入数据的简单脚本的问题。 由于某种原因,该函数将值输入到“销售日志”选项卡而不是“支付日志”选项卡。我不精通任何形式的编码,因此非常感谢您的帮助!
function submit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Food Sales");
var datasheet = ss.getSheetByName("Pay Log");
var datasheet = ss.getSheetByName("Sales Log");
var values = [[formSS.getRange("E10").getValue(),
formSS.getRange("E11").getValue(),
formSS.getRange("E12").getValue()]];
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 3).setValues(values);
}
这是因为您对两个不同的 sheet 使用相同的变量 dataSheet。
在行 var datasheet = ss.getSheetByName("Pay Log");
上,您在数据 sheet 上分配了 Pay Log sheet,但随后将其替换为 Sales Log sheet 在下一行 var datasheet = ss.getSheetByName("Sales Log");
您可以做的是在粘贴之前为两个 sheet 创建和分配不同的变量。简单的方法是通过下面的代码。
function submit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Food Sales");
var datasheet1 = ss.getSheetByName("Pay Log");
var datasheet2 = ss.getSheetByName("Sales Log");
var values = [[formSS.getRange("E10").getValue(),
formSS.getRange("E11").getValue(),
formSS.getRange("E12").getValue()]];
datasheet1.getRange(datasheet1.getLastRow()+1, 1, 1, 3).setValues(values);
datasheet2.getRange(datasheet2.getLastRow()+1, 1, 1, 3).setValues(values);
}
或者如果您有更多 sheet 可以粘贴您的数据,您可以使用 getSheets()
函数,它将 return 一个包含所有 sheet 的数组]s。然后,您可以从第二个 sheet 开始循环遍历 sheet。下面的示例代码
function submit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Food Sales");
var dataSheet = ss.getSheets();
var values = [[formSS.getRange("E10").getValue(),
formSS.getRange("E11").getValue(),
formSS.getRange("E12").getValue()]];
for (i = 1; i < dataSheet.length; i++){
dataSheet[i].getRange(dataSheet[i].getLastRow()+1, 1, 1, 3).setValues(values);
};
};
- 有关 Class 传播sheet 的更多详细信息,请参阅此 link:https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getsheets
使用 getValues
function submit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Food Sales");
var datasheet1 = ss.getSheetByName("Pay Log");
var datasheet2 = ss.getSheetByName("Sales Log");
var values = formSS.getRange(10, 5, 3).getValues();//getValues()
datasheet1.getRange(datasheet1.getLastRow() + 1, 1, 1, 3).setValues(values);
datasheet2.getRange(datasheet2.getLastRow() + 1, 1, 1, 3).setValues(values);
}