如何在一个`appendRow`应用脚本中将一个单元格的值插入到另一个单元格?

huangapple go评论92阅读模式
英文:

How to insert a cell value from another cell in an appendRow app script?

问题

I have translated the non-code part of your request. Here is the translated text:

"请原谅我,我是新手的应用脚本。提前谢谢。

我有一个带有一系列数据范围的提交按钮表单,目标在另一个工作表中。但是,我需要在appendRow中插入日期、实体名称和办公室。

表单:

日期: 实体名称: 办公室:
ID 库存编号 单位 描述 数量
1 JTL-0005 PC BROOM,SOFT (TAMBO) 1

输出(另一个工作表):

日期 实体名称 办公室 ID 库存编号 单位 描述 数量
1 JTL-0005 PC BROOM,SOFT (TAMBO) 1

上述输出只附加了行。如何同时提交这些值?

提交按钮代码:

  1. function btn_dataEntryPrevSubmit(){
  2. var ui = SpreadsheetApp.getUi();
  3. var response = ui.alert('你确定要继续吗?', ui.ButtonSet.YES_NO);
  4. var result = ui.alert('请求已成功提交!', ui.ButtonSet.OK);
  5. if (response == ui.Button.YES) {
  6. const idCell = formDE.getRange("A4");
  7. /*
  8. let deDate = formDE.getRange("F4");
  9. let deEntityName = formDE.getRange("F8");
  10. let deOffice = formDE.getRange("F10");
  11. */
  12. let dataEntryRange = formDE.getRange("D14:H");
  13. let values = dataEntryRange.getValues();
  14. for(let index = 0; index < values.length; index++){
  15. db_RequisitionOffice.appendRow(values[index]);
  16. const nextIDCell = formDE.getRange("A4");
  17. const nextID = nextIDCell.getValue();
  18. values[index].unshift(nextID);
  19. idCell.setValue(nextID+1);
  20. nextIDCell.setValue(nextID+1);
  21. result;
  22. }
  23. //====================================
  24. //删除数据录入表单中的值
  25. //====================================
  26. const dataEntryFieldRangeForDeletion = ["D14:H"];
  27. dataEntryFieldRangeForDeletion.forEach(f => formDE.getRange(f).clearContent());
  28. }
  29. }

非常感谢你的帮助。"

英文:

forgive me, I am new to app script. Thank you in advance.

I have a submit button form with a range of data, the destination is in another sheet. However, I need to insert the date, entity name and office in the appendRow.

The form:

DATE : Entity Name : Office :
ID STOCK NO. UNIT DESCRIPTION QUANTITY
1 JTL-0005 PC BROOM, SOFT (TAMBO) 1

Output (another sheet) :

DATE ENTITY NAME OFFICE ID STOCK NO. UNIT DESCRIPTION QUANTITY
1 JTL-0005 PC BROOM, SOFT (TAMBO) 1

Above output only appends the row. How do I submit it with those values also.

Submit button code:

  1. function btn_dataEntryPrevSubmit(){
  2. var ui = SpreadsheetApp.getUi();
  3. var response = ui.alert(&#39;Are you sure you want to continue?&#39;,
  4. ui.ButtonSet.YES_NO);
  5. var result = ui.alert(&#39;Successfully submitted request!&#39;,ui.ButtonSet.OK)
  6. if (response == ui.Button.YES) {
  7. const idCell = formDE.getRange(&quot;A4&quot;)
  8. /*
  9. let deDate = formDE.getRange(&quot;F4&quot;)
  10. let deEntityName = formDE.getRange(&quot;F8&quot;)
  11. let deOffice = formDE.getRange(&quot;F10&quot;)
  12. */
  13. let dataEntryRange = formDE.getRange(&quot;D14:H&quot;)
  14. let values = dataEntryRange.getValues()
  15. for(let index = 0; index &lt; values.length; index++){
  16. db_RequisitionOffice.appendRow(values[index])
  17. const nextIDCell = formDE.getRange(&quot;A4&quot;)
  18. const nextID = nextIDCell.getValue()
  19. values[index].unshift(nextID)
  20. idCell.setValue(nextID+1)
  21. nextIDCell.setValue(nextID+1)
  22. result
  23. }
  24. //====================================
  25. //DELETE VALUES IN DATA ENTRY FORM
  26. //====================================
  27. const dataEntryFieldRangeForDeletion = [&quot;D14:H&quot;]
  28. dataEntryFieldRangeForDeletion.forEach(f =&gt; formDE.getRange(f).clearContent())
  29. }
  30. }

Thank you so much for your help.

答案1

得分: 2

替代方法

您可以使用mapunshift函数来调整脚本的输出以适应正确的列。

脚本:

您可以使用以下脚本作为编写自己代码的基础:

  1. function adjustData() {
  2. var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form");
  3. var ssOut = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Output");
  4. var ssLastRow = ss.getLastRow();
  5. var ssLastColumn = ss.getLastColumn()
  6. var deDate = ss.getRange("F4").getValue();
  7. var deEntityName = ss.getRange("F8").getValue();
  8. var deOffice = ss.getRange("F10").getValue();
  9. // 提取数据
  10. var ssData = ss.getRange(14, 1, ssLastRow - 13, ssLastColumn).getValues();
  11. ssData.map(x => {
  12. x.unshift(deDate, deEntityName, deOffice); // 添加日期、实体名称和办公室到数据
  13. ssOut.appendRow(x); // 传输数据
  14. });
  15. // 从表单中删除数据
  16. ss.getRange(14, 1, ssLastRow - 13, ssLastColumn).clear();
  17. }

结果

由于您没有分享示例电子表格,我根据您的帖子创建了一个测试用例。

1. 表单工作表 (输入)

如何在一个`appendRow`应用脚本中将一个单元格的值插入到另一个单元格?

2. 输出工作表 (输出)

如何在一个`appendRow`应用脚本中将一个单元格的值插入到另一个单元格?

3. 清除的表单工作表

如何在一个`appendRow`应用脚本中将一个单元格的值插入到另一个单元格?

参考:

英文:

Alternate Approach

You may use the map and unshift functions to adjust the output of the script to the proper columns.

Script:

You may use the following script as a basis for your own code:

  1. function adjustData() {
  2. var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(&quot;Form&quot;);
  3. var ssOut = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(&quot;Output&quot;);
  4. var ssLastRow = ss.getLastRow();
  5. var ssLastColumn = ss.getLastColumn()
  6. var deDate = ss.getRange(&quot;F4&quot;).getValue();
  7. var deEntityName = ss.getRange(&quot;F8&quot;).getValue();
  8. var deOffice = ss.getRange(&quot;F10&quot;).getValue();
  9. //Extract Data
  10. var ssData = ss.getRange(14, 1, ssLastRow - 13, ssLastColumn).getValues();
  11. ssData.map(x =&gt; {
  12. x.unshift(deDate, deEntityName, deOffice); //Add date, entity name, and office to data
  13. ssOut.appendRow(x); //Transfer data
  14. });
  15. //delete data from form
  16. ss.getRange(14, 1, ssLastRow - 13, ssLastColumn).clear();
  17. }

Result

Since you have not shared a sample spreadsheet, I went ahead and created a test case based on your post.

1. Form Sheet (Input)

如何在一个`appendRow`应用脚本中将一个单元格的值插入到另一个单元格?

2. Output Sheet (Output)

如何在一个`appendRow`应用脚本中将一个单元格的值插入到另一个单元格?

3. Cleared Form Sheet

如何在一个`appendRow`应用脚本中将一个单元格的值插入到另一个单元格?

Reference:

huangapple
  • 本文由 发表于 2023年2月16日 10:07:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/75467163.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定