当您提交 Google 表单时,它会将表单响应的副本作为新行存储在 Google 表格中。这里唯一的问题是,Google 表单不会将任何格式或样式添加到您可能已应用于工作表前几行的新行。让我用一个小例子来说明这一点。
这是一个存储 Google 表单响应的 Google 表格。我已将默认字体系列更改为Droid Sans
,将 Country 和 Age 列居中对齐,并将不同的日期格式应用于Date of Birth
列。
一切看起来都不错,但是一旦提交了新的表单,通过 Google 表单附加到 Google 表格的新行将丢失所有格式。
不保留单元格对齐方式,忽略自定义日期格式,默认字体大小和字体系列也是如此。这是同一工作表的屏幕截图,但通过 Google 表单添加了一个新行。
另请参阅:通过工作流程自动化 Google 表单
在 Google 表格中自动设置新行的格式
由于我们无法覆盖此 Google 表单行为,因此我们可以借助 Google Apps 脚本自动格式化通过 Google 表单添加的 Google 表格中的新行。
这个想法很简单。我们将在 Google 表格中创建一个onFormSubmit
触发器,每当提交新表单时就会执行该触发器。此触发器将采用已应用于前一行的任何格式并应用于当前行。
要开始使用,请打开 Google 表格并使用您希望应用于传入表单响应的样式设置最后一行的格式。
接下来,转到 Extensions > Apps Script 菜单并复制粘贴下面的 Google Script。运行createTrigger
,一切顺利!
/** * @OnlyCurrentDoc */ const createTrigger = ( ) => { ScriptApp . getProjectTriggers ( ) . forEach ( ( trigger ) => { ScriptApp . deleteTrigger ( trigger ) ; } ) ; ScriptApp . newTrigger ( 'formRowOnFormSubmit' ) . forSpreadsheet ( SpreadsheetApp . getActive ( ) ) . onFormSubmit ( ) . create ( ) ; } ; const formRowOnFormSubmit = ( e ) => { if ( ! e ) { throw new Error ( 'Please do not run this function manually!' ) ; } const { range } = e ; const row = range . getRowIndex ( ) ; if ( row > 2 ) { const sheet = range . getSheet ( ) ; // Select the previous row range const sourceRange = sheet . getRange ( ` ${ row - 1 } : ${ row - 1 } ` ) ; // Get the recently added row const targetRange = sheet . getRange ( ` ${ row } : ${ row } ` ) ; // Copy the format only from the previous row to the current row sourceRange . copyTo ( targetRange , SpreadsheetApp . CopyPasteType . PASTE_FORMAT , false ) ; } } ;
Google 表格中的条件格式
详细了解Google 表格中的条件格式,它允许您将自动格式应用于电子表格中符合特定条件的单元格。
原文: https://www.labnol.org/auto-format-google-form-responses-220601