2015-10-09 4 views
0

У меня есть электронные таблицы. Я хочу, чтобы программа смотрела на строку A на электронной таблице Ind и посмотрела, является ли она 1 или 0. Если она является активной в активном листе «return», я хочу, чтобы она взяла дату из строки R в таблице «Ind» и разместите его на Spreadhseet «return». Я не могу понять это, и у меня есть работа над VBA в excel.Получить значения из одного листа google введите его на другой лист с петлей 4

Любая помощь была бы принята с благодарностью.

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 
    }} 
+0

'=' это назначение. '==' правдиво. '===' истинно. Вы проверяете вещи с заданием. Вы также можете знать, что 'Z = Z + 1' совпадает с' Z ++', который может быть помещен прямо в ваш цикл while в этом случае, например: 'while (Z ++ PHPglue

+0

Я получаю сейчас «Диапазон не найден (строка 13, файл« ») .. Я думаю, что мне трудно понять, как ссылаться на определенные ячейки в электронной таблице. –

+0

Эта функция будет хорошо работать в отладчике. ] (https://developers.google.com/apps-script/troubleshooting#using_the_debugger_and_breakpoints) –

ответ

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() (нет «с» на конце) вместо 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; 

Вы можете объявить сразу несколько переменных одновременно.

+0

Удивительно, это очень полезно !!!Но мой скрипт не перестает работать ниже, это код . Я добавил это в код if (source_sheet.getRange («A» + X.toString()). GetValues ​​() === 1) { –

+0

'getValues ​​()' с «s» на конце, получает двумерный массив. Используйте 'getValue()' (no "s" в конце) Это получит только одно значение, без массива. Используйте отладчик и выполните код за строкой. –

+0

Отличная идея отладки. Мой последний вопрос - это код target_sheet.getRange («A» + Y.toString()). SetValue (selldate); работать, чтобы получить данные в ячейку? Я запускаю программу, и она работает нормально, но ни одна из данных не попадает в ячейки? Ох и спасибо! –

Смежные вопросы