如何仅选择一个单元格来复制单个行的范围?

时间:2019-11-06 05:45:06

标签: google-apps-script google-sheets

我想知道仅通过选择一个单元格作为活动单元格来复制范围(由单行和几列组成)的脚本是什么。

例如,如果我当前的活动单元格是A1或行1中的任何位置,并且我运行了脚本,它将复制A1:F1。如果我当前的活动单元格是A2或第2行中的任何位置,它将复制A2:F2。

到目前为止,我正在使用getActiveRange行,但是我发现选择A1:F1然后运行脚本会花费一些时间。如果有很多项目需要复制到不同的选项卡,我会发现这尤其正确。

我当前使用的脚本如下:

<?php
$query = new WP_Query( array( 
  'post_type' => 'hotcheck',
  'topics__in' => array($cat->term_id),
   ) );

if ( $query->have_posts() ) : ?>
  <?php while ( $query->have_posts() ) : $query->the_post(); ?> 
    <div class="entry">
      <h2 class="title"><?php the_title(); ?></h2>
      <?php the_content(); ?>
    </div>
  <?php endwhile; wp_reset_postdata(); ?>
  <!-- show pagination here -->
<?php else : ?>

这是题外话,但如果有人知道如何将超链接插入所选行的G列中(例如,如果当前活动单元格位于A1或第1行中的任何位置,则超级链接将粘贴到G1上,如果我当前的活动单元格位于A2或第2行的任何位置,超链接将粘贴在G2上),请告诉我。

1 个答案:

答案 0 :(得分:2)

  • 您要将源工作表的所选行的“ A”列复制到“ F”到目标工作表的“ A4”范围内。
    • 例如,当选择源工作表的“ B1”单元格时,要将“ A1:F1”复制到目标工作表的“ A4”范围内。
    • 当选择源工作表的“ B1”单元格时,您想要在源工作表的单元格“ G1”上放置超链接。
  • 从您的脚本中,我认为var source = SpreadsheetApp.getActiveSpreadsheet();var target = SpreadsheetApp.openById("SpreadsheetID");是相同的电子表格,因为如果它们不同,则会在source_range.copyTo(target_range);处发生错误。

如果我的理解正确,那么这个答案如何?请认为这只是几个答案之一。

修改后的脚本:

修改脚本后,请进行以下修改。

从:
var source_range = source_sheet.getActiveRange();
var target_range = target_sheet.getRange("A4");
至:
var url = "https://www.google.com/"; // Added

var source_range = source_sheet.getActiveRange();
source_range = source_sheet.getRange(source_range.getRow(), 1, 1, 6); // Added
source_sheet.getRange("G" + source_range.getRow()).setFormula('=HYPERLINK("' + url + '","sample")') // Added
var target_range = target_sheet.getRange("A4");
  • 请将超链接的URL设置为url的变量。
  • 为了将列“ A”复制到“ F”,用getRow()检索所选行,并用{{创建源工作表的列“ A”到“ F”的范围1}}。
  • 为了将超链接放置到列“ G”,请用getRange()检索选定的行,并用getRow()创建源工作表的列“ G”的范围。然后,使用getRange()放置超链接。

参考文献:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。

其他请求的答案:

在回复评论中,添加了the following request

  

是否可以使用AS获取新工作表的工作表ID,然后将其粘贴到setFormula网址中?

对于上述其他要求,修改后的脚本如下。

修改后的脚本:

请按如下所示修改脚本。

setFormula()
至:
sheet.copyTo(source).setName('TargetSheet1');

从:
var newSheet = sheet.copyTo(source).setName('TargetSheet1');
至:
var source_range = source_sheet.getActiveRange();
var target_range = target_sheet.getRange("A4");
  • 您也可以使用var url = source.getUrl() + "#gid=" + newSheet.getSheetId(); // Added var source_range = source_sheet.getActiveRange(); source_range = source_sheet.getRange(source_range.getRow(), 1, 1, 6); // Added source_sheet.getRange("G" + source_range.getRow()).setFormula('=HYPERLINK("' + url + '","sample")') // Added var target_range = target_sheet.getRange("A4"); 代替var url = "#gid=" + newSheet.getSheetId();