2017-01-10 2 views
1

Я пытаюсь обнаружить обновления из Google Таблиц. Я следую за Sheets API V3 documentation и успешно смог просмотреть лист и получить от него обновления.Почему мои листы Google, которые просматриваются, постоянно обновляются?

Однако я не получаю каждое обновление. Например, если я внес изменения в лист, я получу обновление от Google. Если я сделаю второе изменение в течение одной минуты, я могу или не могу получить обновление. Третье изменение никогда не будет отправлено. Если я обновляю лист, я сразу же получаю обновление.

Я провел обширное тестирование, и у меня сложилось впечатление, что Google не отправляет обновления, которые я не получаю. Есть ли какие-то дросселирование, сделанные Google, или это ошибка в API?

ОБНОВЛЕНИЕ: Я расскажу о другом контексте, чтобы уточнить, что именно я имею в виду.

Я пытаюсь получить фактические данные, измененные в Листе Google. Например, используя this screenshot, всякий раз, когда значение изменяется на листе, я хочу, чтобы Google вносил обновления в меня в режиме реального времени. Я использую API-интерфейс Google Таблиц лист (drive.files.watch), создавая часы, отлично работает, так что это не проблема. Проблема в том, что я иногда получаю обновление, например, первые два сделанных изменения будут отправлены мне. Но если есть большое количество исправлений, они никогда не отправляются.

+0

Я столкнулся с этой проблемой и предположил, что должен делать что-то неправильно, но, видимо, это не отдельный случай. Любой прогресс в этом на вашем конце? – Jakob

ответ

0

Попробуйте вручную установить правила уведомления в своей электронной таблице. Вы можете сделать это, перейдя в Tools -> Notification Правила, нажмите кнопку радио "Any changes are made" и "Email - right away" получать уведомления сразу же, когда что-то изменилось в вашей таблице.

Другой способ получения уведомления - создать функцию, которая проверяет изменения. Проверьте код примера в этом SO question.

var sheet = **whatever**;//The spreadsheet where you will be making changes 
var range = **whatever**;//The range that you will be checking for changes 
var compSheet = **whatever**;//The sheet that you will compare with for changes 
function checkMatch(){ 
    var myCurrent = sheet.getRange(range).getValues(); 
    var myComparison = compSheet.getRange(range).getvalues(); 
    if(myCurrent == myComparison){//Checks to see if there are any differences 
    for(i=0;i<compSheet.length;++i){ //Since getValues returns a 'multi-dimensional' array, 2 for loops are used to compare each element 
    for(j=0;j<compSheet[i].length;++i){ 
     if(myCurrent[i][j] != myComparison[i][j]){//Determines if there is a difference; 
     //***Whatever you want to do with the differences, put them here*** 
    } 
    } 

    myEmailer(sheet.getUrl());//Passes the url of sheet to youur emailer function 
    compSheet.getRange(range).setValues(myCurrent);//Updates compSheet so that next time is can check for the next series of changes 
    } 
    } 

Надеюсь, он вам поможет.

+0

Спасибо за ваши предложения, но они не совсем то, что я ищу здесь. Я обновил вопрос, чтобы было легче понять, что я имею в виду. –

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