Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 改变一个值!在谷歌表格中_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 改变一个值!在谷歌表格中

Google apps script 改变一个值!在谷歌表格中,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个谷歌工作表和一个应用程序脚本,我正在处理,但我在其中遇到了一个问题。我在一张纸上有两列,B和C,它们包含不同的值。B将包含单词Middle,C将是我需要的实际数据 我在G列中使用了一个公式,它读取B列和C列中的值,并提取与“Middle”匹配的相关数据。它将任何与Middle匹配的数据放入G列,并将C列中的数据放入相邻的H单元格。我对G列使用的公式如下所示 =IF (ISERROR(QUERY('Announcements'!B2:C30;"select * where B contai

我有一个谷歌工作表和一个应用程序脚本,我正在处理,但我在其中遇到了一个问题。我在一张纸上有两列,B和C,它们包含不同的值。B将包含单词Middle,C将是我需要的实际数据

我在G列中使用了一个公式,它读取B列和C列中的值,并提取与“Middle”匹配的相关数据。它将任何与Middle匹配的数据放入G列,并将C列中的数据放入相邻的H单元格。我对G列使用的公式如下所示

=IF (ISERROR(QUERY('Announcements'!B2:C30;"select * where B contains 'Middle'")), "", QUERY('Announcements'!B2:C30;"select * where B contains 'Middle'"))
然后是H列,其中包含:

=CONTINUE(G2, 1, 2)
当工作表公式运行时,它会提取正确的数据,但我遇到的问题是,如果没有任何与中间条件匹配的数据要提取,则H2单元格会在其中得到一个-,并且应用程序脚本会抛出一个值!进入运行时正在填充的google文档

应用程序脚本当前如下所示:

var sh10 = sh2.getRange('H2:H20').getValues(); //Middle
我已尝试修改找到的此代码

var sheet = ss.getSheetByName("Announcements")
var active = sheet.getActiveCell('H2');
var cell = active.getValue();
if (cell === "#VALUE!"){
active.setValue("");
};
但是当我运行脚本时,我得到了错误消息:找不到方法getActiveCellstring。第64行,文件测试

我的最终目标是能够运行工作表和脚本,如果文档的占位符中没有任何数据可插入,只需在该占位符中留出一个空格,然后继续下一部分。这些是脚本计算到中间的匹配总数并将数据插入占位符的部分

var sh21 = sh2.getRange(3,12).getValue(); // Middle
var announcement2 = ""; for (var i = 0; i <= 20 - sh21; i++) { announcement2 += sh10[i]+"\n"; } // Middle
任何帮助都将不胜感激

谢谢,


Paul

我注意到您有一个名为ss的变量,但我没有看到一行代码引用电子表格:

var ss = SpreadsheetApp.getActiveSpreadsheet();
如果没有这一行,那么接下来的几行依赖于ss的代码将无法工作

如果输入Logger.log语句以检查变量,则可以看到变量设置为:

var ss = SpreadsheetApp.getActiveSpreadsheet();
Logger.log("The value of my ss variable: " + ss);

var sheet = ss.getSheetByName("Announcements")
Logger.log("sheet variable: " + sheet);
然后在代码运行后查看日志。 我猜工作表可能是空的,这是导致错误的原因


我并不是说这回答了您的问题,但要调试问题,我们必须系统地经历一个过程。

该方法。getActiveCell返回电子表格中的任何活动单元格,比如说当前选定的单元格。如果需要“H2”的值,则需要另一个方法:getRange“H2”。getValue


这个问题没有明确解释,但是根据我的理解,您想要实现的是-1。清除G列和H列中的内容。将G列和H列的公式添加到H.2。您想知道B和C列是否包含中间列,因此可以将字符串添加到G列,并将计数值添加到H.3列。是否要在应用程序脚本中实现此功能?明确确认并编辑问题。嗨,我很抱歉。我在代码中有var ss行。它在上面,我忘了把它包括进去。这是您建议的记录器代码,这是返回的代码。我的ss变量的值:电子表格变量:工作表我认为问题源于我如何试图只获取其中一个单元格的值。在代码的一部分中,我要求它获取H2-H20范围的值,这给了我以下信息:VALUE!,,,,,,,,,,,,,,,,,,在那之后,我要求它得到活动单元H2,并得到它的值。如果该单元格与值匹配!然后将该值设置为“Hi”。节日的问候。我按照您的建议运行了代码,它返回的值是H2:value!,这正是我所期望的。有没有一种方法可以操纵它,使其将值转换为其他值?谢谢你,保罗