AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-22097496

Jarvis Davis's questions

Martin Hope
Jarvis Davis
Asked: 2025-04-27 04:24:57 +0800 CST

如何突出显示重复行、多个条件(条件格式)

  • 5

我尝试突出显示(C) 列和(D)列中任何值重复的整行。本质上,每个代理(D 列)都应该有一个唯一的日期范围(C 列)。C 列和 D 列的组合应该始终唯一,并且应该突出显示/标记。

在条件格式中,我们创建了一个自定义公式来完成此任务。但是,当添加下面的公式时,它会突出显示整个工作表选项卡

=(COUNTIF($A$2:$D$5000, $C2)>1)*(COUNTIF($A$2:$D$5000, $D2)>1)

在下图中,我提供了一个示例,其中 C 列和 D 列中包含重复条目,应该突出显示。

在此处输入图片描述

google-sheets
  • 1 个回答
  • 30 Views
Martin Hope
Jarvis Davis
Asked: 2025-02-08 22:12:35 +0800 CST

如果指定的关键字在一定范围内,我该如何发送电子邮件通知?

  • 5

概述:

  • 每次在列 (CJ) 中列出关键字“完成”时,我都会尝试发送电子邮件通知消息。
  • 不确定我是否有正确的方法,但validate_complete函数会检查该值是否在 CJ 列中列出,如果存在,它会用文本“发送电子邮件”填充 CK 列(在同一行) 。
  • “发送电子邮件”文本启动Send_notification功能,并将电子邮件发送到指定的电子邮件地址。
  • 我还创建了一个触发器,每次在列(CK)中列出“发送电子邮件”时,该触发器都会启动validate_complete函数。

当前问题:

执行触发器时,它会运行几分钟,要么超时,要么一次发送多封电子邮件。当列 (CK) 中指定行列出文本“发送电子邮件”时,只需发送一封电子邮件,然后清除“发送电子邮件”文本,这样如果另一行也包含“发送电子邮件”文本,就不会发送多封电子邮件。

非常感谢进一步的指导。谢谢

function validate_complete(){

  const ss = SpreadsheetApp.getActive();

  const sh_01 = ss.getSheetByName('Index');   
  const data = sh_01.getRange('CI2:CK'+sh_01.getLastRow()).getValues();

  var columnNumberToWatch = 88; // column A = 1, B = 2, etc.
  var valueToWatch = 'Complete';

 data.forEach(r=>{
  var range = sh_01.getActiveCell();
  if (range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
    range.offset(0, 1).setValue('Send Email');

  }

  });
    sendnotificationEmail();
}



function sendnotificationEmail() {
  const ss = SpreadsheetApp.getActive();

  const sh_02 = ss.getSheetByName('Index'); 
  const date_range = sh_02.getRange('BW2').getValues();
  const data_02 = sh_02.getRange('CI2:CK'+sh_02.getLastRow()).getValues();

  var recipient = "[email protected],[email protected]";
  data_02.forEach(r=>{
 
     let overdueValue = r[2];  
     if (overdueValue === "Send Email"){
         let name = r[0];
         let message = ' Test: ' + name ;
         let subject = 'Test: '+ name + ', ' + date_range + ' Inspections are available' ;
         MailApp.sendEmail(recipient, subject, message); 
     }
       var range_02 = sh_02.getRange('CK2:CK100');
       range_02.clear();

  });  
}

电流触发

google-sheets
  • 1 个回答
  • 52 Views
Martin Hope
Jarvis Davis
Asked: 2024-11-19 02:59:22 +0800 CST

如何确定受访者的电子邮件地址在列表中是否唯一?

  • 5

概述:Google 表格文件链接到 3 个 Google 表单。提交表单后,响应将添加到对应的虚拟电子表格选项卡中:表单响应 1 表单响应 2 表单响应 4

每次提交表单后,除了表单问题的其他答复外,电子邮件地址也会被跟踪(B 列)。

目标:我的目标是确定受访者的电子邮件地址在所有 3 个表单回复选项卡中是否唯一。

例如,如果电子邮件地址在多个虚拟表选项卡中列出,则首选结果将仅显示一个电子邮件地址。

电子邮件地址在虚拟电子表格的 B 列中被跟踪。验证完成后,将执行后续功能。

当前问题:当前逻辑是识别每个工作表选项卡的唯一电子邮件地址,而不是累积结果(即所有选项卡的组合)。如果电子邮件地址列在多个虚拟工作表选项卡中,则首选结果将仅显示一个电子邮件地址。

如能得到进一步指导,我们将不胜感激。

function findUnique(){
  var col = 1 ; // column B (Email Address)
  var ss = SpreadsheetApp.getActive();
  var allsheets = ss.getSheets();

  // Array listing sheets to exclude from execution
  var exclude = ["Reference","Index"];

 for (var s in allsheets){
 var source_sheet = allsheets[s];   

    // Stop iteration execution; exclude Reference and Index tabs.
  if(exclude.indexOf(source_sheet.getName()) != -1) continue;

  var data=source_sheet.getDataRange().getValues();// get all data
  //Logger.log(data);
  var newdata = new Array();
  for(nn in data){
    var duplicate = false;
    for(j in newdata){
  
      if(data[nn][col] == newdata[j][0]){
        duplicate = true;
      }
    }

    if(!duplicate){
      newdata.push([data[nn][col]]);
    }
  
  }
Logger.log(newdata);
  newdata.sort(function(x,y){
  var xp = Number(x[0]);// ensure you get numbers
  var yp = Number(y[0]);
  return xp == yp ? 0 : xp < yp ? -1 : 1;// sort on numeric ascending
});
//Logger.log(newdata); // Uniques?
  }
}

虚拟电子表格

在此处输入图片描述

javascript
  • 1 个回答
  • 76 Views
Martin Hope
Jarvis Davis
Asked: 2024-11-08 23:11:31 +0800 CST

复制(事件) Google Sheets 电子表格后,如何保存 URL?

  • 6

概述:我有一个包含多个选项卡的 Google 表格模板文件。打开文件时,系统会弹出一条消息提示用户“单击链接以创建副本 --> 我的工作簿副本”。选择“我的工作簿副本”后,文件将保存到特定的 Google Drive 文件夹,并打开一个唯一/新的 Google 电子表格文件,用户可以在其中进行编辑。

目标:每次复制时,我都会尝试保存新 Google 表格文件中的 URL 链接(保存到“参考”选项卡)。我的目标是将 URL 链接添加到“参考”表格的 C 列中。

当前问题: makeAcopy 脚本(复制电子表格并将文件添加到指定的 Google Drive),但 URL 链接未添加到参考表。我不确定我是否采取了正确的方法,不清楚将 URL 链接添加到参考表的逻辑是否需要在单独的事件(打开时)中添加,或者是否应将其包含在 makeAcopy 脚本中。如果能得到进一步的指导,我将不胜感激。

function onOpen(e){

const info = e.namedValues;
const blob = makeAcopy(info);
const date = Date;
const entryRow = e.range.getRow();
SpreadsheetApp.getActiveSheet().getSheetName("Reference").getRange(entryRow,3).setValue(blob);
SpreadsheetApp.getActiveSheet().getSheetName("Reference").getRange(entryRow,2).setValue(fileName);
SpreadsheetApp.getActiveSheet().getSheetName("Reference").getRange(entryRow,1).setValue(date);

}



function makeAcopy(info){

    var nom = 'My Workbook copy'
        var sheet = SpreadsheetApp.openById('1EylqqfqXWaSCJbvVmqrwJHcwGPUvlQYOZ0wSpvT_mMY')
        var destFolder = DriveApp.getFolderById("1iCVsXmeSMHOpISQslJhX7r842aSHrqos"); //.next();
  
    const ds = Utilities.formatDate(new Date(),SpreadsheetApp.getActive().getSpreadsheetTimeZone(),"MM.dd.yyyy");
  //var fileName = DriveApp.getFileById(sheet.getId()).makeCopy(nom, destFolder).setName(`${nom}.${ds}`);
  var fileID = DriveApp.getFileById(sheet.getId()).makeCopy(nom, destFolder).getId();


    var htmlOutput = HtmlService
        .createHtmlOutput('<a href="https://docs.google.com/spreadsheets/d/' + fileID + '/" target="_blank">' + nom + '</a>')
        .setWidth(350) //optional
        .setHeight(50); //optional
    SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Click link to create a Copy');

    return fileID;
    //return fileName;

}

虚拟电子表格

google-sheets
  • 2 个回答
  • 67 Views
Martin Hope
Jarvis Davis
Asked: 2023-08-23 03:21:29 +0800 CST

执行基于下拉列表中选择的值的 Apps 脚本

  • 5

下午好,在此输入图像描述

我有一个 Google 表格,其中包含一份摘要表和大约。20 个子选项卡。在摘要表上,我创建了一个下拉列表,其中列出了每个子选项卡。

当用户从下拉列表中选择特定的子选项卡然后单击“清除”按钮时,我希望在选项卡中清除指定行范围内的金额。

目前我有一个单独的函数来清除每个工作表。我尝试将其合并为一个函数。

在附图中,下拉列表位于

Summary!J4

下拉列表的片段

--> Planning
--> Framing
--> Foundation
--> ALL SHEETS

我附上了代码片段和图片以供澄清。非常感谢任何帮助。谢谢!

function clearPlanningfields() {

 var myGoogleSheet=SpreadsheetApp.getActiveSpreadsheet();

 var shUserForm=myGoogleSheet.getSheetByName("Planning");

 var ui=SpreadsheetApp.getUi();

 var response=ui.alert("Reset Confirmation", "Do you want to Clear the Sheets?", ui.ButtonSet.YES_NO);

 if(response==ui.Button.NO){

   return;

 }

 shUserForm.getRange('H5:H13').setValue('');
 shUserForm.getRange('H17:H26').setValue('');
 shUserForm.getRange('H30:H31').setValue('');
 shUserForm.getRange('H35:H41').setValue('');


 shUserForm.getRange('O5:O13').setValue(false);
 shUserForm.getRange('O17:O26').setValue(false);
 shUserForm.getRange('O30:O31').setValue(false);
 shUserForm.getRange('O35:O41').setValue(false);

 shUserForm.getRange('N4').setValue(0.00);
 shUserForm.getRange('N16').setValue(0.00);
 shUserForm.getRange('N29').setValue(0.00);
 shUserForm.getRange('N34').setValue(0.00);

 myGoogleSheet.toast("Amounts have been Reset from selected Sheet");

return true;

}



function clearFramingfields() {

 var myGoogleSheet=SpreadsheetApp.getActiveSpreadsheet();

 var shUserForm=myGoogleSheet.getSheetByName("Framing");

 var ui=SpreadsheetApp.getUi();

 var response=ui.alert("Reset Confirmation", "Do you want to Clear the Sheets?", ui.ButtonSet.YES_NO);

 if(response==ui.Button.NO){

   return;

 }

 shUserForm.getRange('H5:H19').setValue('');
 shUserForm.getRange('H23:H42').setValue('');
 shUserForm.getRange('H46:H66').setValue('');
 shUserForm.getRange('H70:H84').setValue('');


 shUserForm.getRange('O5:O19').setValue(false);
 shUserForm.getRange('O23:O42').setValue(false);
 shUserForm.getRange('O46:O66').setValue(false);
 shUserForm.getRange('O70:O84').setValue(false);

 shUserForm.getRange('N4').setValue(0.00);
 shUserForm.getRange('N22').setValue(0.00);
 shUserForm.getRange('N45').setValue(0.00);
 shUserForm.getRange('N69').setValue(0.00);

 myGoogleSheet.toast("Amounts have been Reset from selected Sheet");

return true;

}



function clearFoundationfields() {

 var myGoogleSheet=SpreadsheetApp.getActiveSpreadsheet();

 var shUserForm=myGoogleSheet.getSheetByName("Foundation");

 var ui=SpreadsheetApp.getUi();

 var response=ui.alert("Reset Confirmation", "Do you want to Clear the Sheets?", ui.ButtonSet.YES_NO);

 if(response==ui.Button.NO){

   return;

 }

 shUserForm.getRange('H5:H10').setValue('');
 shUserForm.getRange('H14:H22').setValue('');
 shUserForm.getRange('H26:H41').setValue('');
 shUserForm.getRange('H45:H55').setValue('');
 shUserForm.getRange('H59:H62').setValue('');


 shUserForm.getRange('O5:O10').setValue(false);
 shUserForm.getRange('O14:O22').setValue(false);
 shUserForm.getRange('O26:O41').setValue(false);
 shUserForm.getRange('O45:O55').setValue(false);
 shUserForm.getRange('O59:O62').setValue(false);

 shUserForm.getRange('N4').setValue(0.00);
 shUserForm.getRange('N13').setValue(0.00);
 shUserForm.getRange('N25').setValue(0.00);
 shUserForm.getRange('N44').setValue(0.00);
 shUserForm.getRange('N58').setValue(0.00);

 myGoogleSheet.toast("Amounts have been Reset from selected Sheet");

return true;

}

链接虚拟电子表格

google-apps-script
  • 1 个回答
  • 37 Views
Martin Hope
Jarvis Davis
Asked: 2023-08-17 22:29:40 +0800 CST

谷歌应用程序脚本水平复选框,如单选按钮(选中/取消选中)

  • 5

早上好,

我正在尝试实现复选框(O 列和 P 列),其中如果选中一个复选框,则另一列会自动取消选中。这需要用于多行。

一旦出现细微差别,如果用户插入新行,我希望此函数能够处理新行中的检查/取消检查功能。例如,如果用户在第 9 行上方插入新行,则复选框功能也将合并到新行中。

我提供了 Google Sheets 中数据集的附件和一行的代码示例。

非常感谢任何指导。谢谢在此输入图像描述

function onEdit(e) {

  const as = e.source.getActiveSheet();
  const cell = e.range.getA1Notation();
  const cell_checks = ['O5','P5'];
  if(as.getName() == "Planning" && cell_checks.includes(cell) && e.range.isChecked())
  {cell_checks.filter(val=>val!=cell).forEach(c=>as.getRange(c).uncheck())}  
google-apps-script
  • 1 个回答
  • 28 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve