使用 Google 脚本检测指定范围的内容是否被修改。

在多人协助编辑表格的时候,很容易造成内容被误删或者被修改,所以可以通过 Google 脚本来检测指定范围的内容是否被修改。

在表格内 A1:C1 范围是表头,需要检测这个范围的内容是否被修改。

因为在表格内的数据是一个二维数组,可以通过 Google 脚本 Log 小技巧 这个方法把内容打印在文档里。

const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('工作表1')
const title = sheet.getRange('A1:C1').getValues()
logToDoc('SheetID', title)

然后获取表格内的标题内容和设置好的原始内容判断是否一致,为了方便判断,这里把数组使用 toString 改成文本格式后再进行判断。

const title = sheet.getRange('A1:C1').getValues()
const origTitle = [["日期","名字","数量"]]
if (title.toString() !== origTitle.toString()) {
  SpreadsheetApp.getUi().alert('内容被篡改')
}

如果需要还原回原始内容,使用 setValues 写入原始内容。

sheet.getRange('A1:C1').setValues(origTitle)

完整代码如下:

function detectSheet () {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('工作表1')
  const title = sheet.getRange('A1:C1').getValues()
  const origTitle = [["日期","名字","数量"]]
  if (title.toString() !== origTitle.toString()) {
    SpreadsheetApp.getUi().alert('内容被篡改')
    // 还原内容
    // sheet.getRange('A1:C1').setValues(origTitle)
  }
}