如何使用Google Sheet API将相对公式附加到工作表中

时间:2019-09-27 06:37:50

标签: android google-sheets-api google-sheets-formula

我正在使用api将一行附加到google表格中,并且工作正常,但该行中的最后一个对象是公式。无需更改以反映其所在的行,例如= E3-D3,= E4-D4,它保持静态并始终将= E3-D3放入行中。该公式仅适用于该行。

这是针对android的,我正在使用Java库。我知道一定有一种简单的方法可以做到这一点,这很普遍,但是我很想念它。 这是一个代码示例:

这些是我要传递的对象:o6是公式,这是错误的,但是我不确定如何解决。

 Object o1 = result.getDate(), o2 = result.getDescription(), o3 =  
 String.valueOf(result.getDistance()), o4 = result.getStartTime(),o5 = 
 result.getEndTime(), **o6 ="=E3-D3";**





//for the values that you want to input, create a list of object lists
    List<List<Object>> values = new ArrayList<>();


    //values.add(data1);

    //todo me
    values.add(data);

    //Create the valuerange object and set its fields


    ValueRange valueRange = new ValueRange();
    valueRange.setMajorDimension("ROWS");
    valueRange.setRange(range);
    valueRange.setValues(values);

    AppendValuesResponse avResponse = null;

    try {
        avResponse = this.mService.spreadsheets().values()
                .append(mSpreadSheetId, range, valueRange)
                .setValueInputOption("USER_ENTERED")
                .execute();

到目前为止,我使用的所有公式都占用一个单元格,并且将整个列加起来。

1 个答案:

答案 0 :(得分:0)

使用相对公式代替带有R1C1表示法的绝对公式。

  

Google表格中使用了两种定位符号。第一种称为A1表示法,使用拉丁字母中的字符表示列,使用整数表示单元格的行。第二种称为R1C1表示法,使用整数表示列和行,并且在整数前均以相应的R或C表示行号或列号。地址A1和R1C1等效,地址B5和R5C2也一样。

因此,例如,如果要更新的单元格在H列中,但是您希望即使该列不同,它也总是反映行,请使用相对表示法执行此操作。 INDIRECT公式关键字可以在这里为您提供帮助:

=E3-D3

成为:

=INDIRECT("R[0]C[-3]", FALSE)-INDIRECT("R[0]C[-4]",FALSE)

对于H列。