javascript - 从一张谷歌工作表中获取值,将其输入到另一张带有 4 个循环的工作表上

标签 javascript loops google-apps-script google-sheets

我必须制作电子表格。我希望程序查看电子表格 Ind 上的 A 行,看看它是 1 还是 0。如果它是事件工作表“return”上的 1,我希望它从电子表格“Ind”中的 D 行获取日期,并且将其发布到 Spreadhseet“返回”上。我无法弄清楚这一点,我让它在 Excel 中的 VBA 上工作。

任何帮助将不胜感激。

function myFunction() {

 X = 5;
 Y = 2;
 Z = 1;
 Count = 4560;
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var source_sheet = ss.getSheetByName("Ind");
 var target_sheet = ss.getSheetByName("Returns");

 while (Z < Count){

   if (source_sheet.getRange("A" & X) = 1) { 
      var buydate = source_sheeet.getRange("D" & X).getValues()
      target_sheet.getRange("A" & Y) = buydate
      target_sheet.getRange("B" & Y) = "Buy"
      Y = Y + 1
   } else if (source_sheeet.Range("C" & X) = 2) {
      var selldate = source_sheeet.Range("D" & X).getvalues()
      target_sheet.getRange("A" & Y) = selldate
       target_sheet.getRange("B" & Y) = "Sell"
       Y = Y + 1
   }

    X = X + 1
   Z = Z + 1
  }}

最佳答案

这一行:

if (source_sheet.getRange("A" & X) = 1) {

使用的是&符号,它应该是一个加号。要在 JavaScript 中连接字符串,请使用加号。

此外,source_sheet.getRange() 将返回一个范围,而不是一个值,因此它永远不会等于 1。您需要使用如下所示的内容:

if (source_sheet.getRange("A" + X.toString()).getValue() === 1) {

并使用三个等号进行相等检查。 JavaScript 不断尝试将变量强制转换为看起来正确的类型。因此,它可能会将变量“X”中的数字转换为字符串,但您也可以使用 toString() 方法。

getValues() 返回一个二维数组。每个内部数组代表一行。内部数组中的每个元素代表一行中的一个单元格。

如果您只想获取一个值,请使用 getValue()(末尾没有“s”)而不是 getValues()

var buydate = source_sheet.getRange("D" + X.toString()).getValue();

您正在尝试使用等号设置该值。那是行不通的。您需要使用 setValue()setValues() 方法。

target_sheet.getRange("A" + Y.toString()).setValue(buydate);

通过在赋值中不使用 var 关键字,变量会自动成为“全局”变量。

X = 5;
Y = 2;
Z = 1;

我认为在这种情况下没有必要将它们设为全局变量。

var X = 5,
    Y = 2,
    Z = 1;

您可以同时声明多个变量。

关于javascript - 从一张谷歌工作表中获取值,将其输入到另一张带有 4 个循环的工作表上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33028048/

相关文章:

php - 为什么 `switch` 被认为是 `continue` 的循环结构?

google-apps-script - MailApp.sendEmail 错误消息 - "do not have permission to call sendEmail"

javascript - 此刻的 toIsoString() 是什么,为什么它给我的时间比当前时间少

C:循环的替代方案

jQuery - for 循环超时

google-apps-script - 需要一个脚本,根据工作表中输入的数据在 Google 云端硬盘中创建文件夹

javascript - Google 脚本无法读取属性 "0"

javascript - Bootstrap 根据在第一个下拉列表中点击的 li 显示/隐藏 li 元素

javascript - 当我单击同一个 div 或 div 外部时,如何隐藏和切换弹出框元素?

javascript - 访问 ko.compulated 内部的本地函数