【问题标题】:Set values to ranges in a different spreadsheet将值设置为不同电子表格中的范围
【发布时间】:2018-08-14 02:57:36
【问题描述】:

任何人都可以提供有关如何更新或将值设置为不同电子表格中的范围的建议。我知道 importRange 函数会将值带入活动工作表,但我想将活动工作表中的单行数据“推送”到名为 FinalData 的工作表底部的一行,该工作表位于不同的电子表格中。

我要“推送”的数据由其他代码填充,从而在名为 TempData 的工作表中生成单行数据。数据存在于范围 TempData!A2:U2 中。

我的目标是将 TempData!A2:U2 中的数据附加到名为“DataFinal”的表格底部的新行中,该表格位于完全独立的谷歌电子表格中(但在同一个“谷歌驱动器”上。)

到目前为止,这是我尝试过的:

// Row to FinalData
   var ss = SpreadsheetApp.getActiveSpreadsheet ();

   var startSheet = ss.getSheetByName("TempData");

   var sourceRange = ss.getRange ("TempData!A2:U");

   var target = SpreadsheetApp.openById("1bWKS_Z1JwLSCO5WSq1iNP1LLQpVXnspA4WkzdyxYDNY");

   var targetSheet = target.getSheetByName("DataFinal");

   var lastRow = targetSheet.getLastRow();

   targetSheet.insertRowAfter(lastRow); 

   sourceRange.copyTo(targetSheet.getRange(lastRow + 1,1), {contentsOnly: true});

当我运行它时,我收到一条错误消息,提示“目标范围和源范围必须在同一个电子表格上。”。必须有办法做到这一点——欢迎提出任何建议。

【问题讨论】:

    标签: google-apps-script google-sheets setvalue


    【解决方案1】:

    copyTo() 可用于同一个电子表格。

    从您的脚本中,我认为您可以使用getValues()setValues() 来实现它,因为您使用的是contentsOnly: true。那么这个修改怎么样呢?

    发件人:

    sourceRange.copyTo(targetSheet.getRange(lastRow + 1,1), {contentsOnly: true})
    

    收件人:

    var sourceValues = sourceRange.getValues();
    targetSheet.getRange(lastRow + 1, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues);
    

    注意:

    • 如果您想使用copyTo()this thread 可能对您的情况有用。

    参考资料:

    如果这不是你想要的,请告诉我。我想修改它。

    【讨论】:

    • 天哪,它成功了!非常感谢!!!我花了几个小时在互联网上苦苦挣扎,试图弄清楚如何做到这一点。你让它看起来很容易!我非常感谢!非常感谢!!!!
    • @Carolyn 很高兴您的问题得到了解决。也谢谢你!
    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 2022-11-15
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2020-11-23
    • 1970-01-01
    相关资源
    最近更新 更多